diff --git a/README.md b/README.md
index f64c05f..af1b936 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,115 @@
-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.
+### 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.
-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.
+A hosted version of this dapp can be viewed at [explorer.smartpiggies.com](https://explorer.smartpiggies.com).
-Happy hacking!
+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.
+
+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 0000000..a11777c
Binary files /dev/null and b/app/public/favicon.ico differ
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
+
+
+ You need to enable JavaScript to run this 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 0000000..729be10
Binary files /dev/null and b/app/src/Assets/Logo/logo.png differ
diff --git a/app/src/Assets/Logo/piggieface_02.png b/app/src/Assets/Logo/piggieface_02.png
new file mode 100644
index 0000000..c957c65
Binary files /dev/null and b/app/src/Assets/Logo/piggieface_02.png differ
diff --git a/app/src/components/FetchData/index.js b/app/src/components/FetchData/index.js
new file mode 100644
index 0000000..875655e
--- /dev/null
+++ b/app/src/components/FetchData/index.js
@@ -0,0 +1,269 @@
+import React, { Component } from "react"
+import { drizzleConnect } from 'drizzle-react'
+import PropTypes from 'prop-types'
+
+//components
+import PiggyToken from "../PiggyToken"
+
+const endpoint = 'https://api.goerli.aleth.io/v1/contracts/0xd847904c84532950bdbe7ed8dd2e8c9ce0a3716d/logEntries'
+
+class FetchData extends Component {
+ constructor(props, context) {
+ super(props)
+
+ this.hex2a = this.hex2a.bind(this)
+ this.fetchPiggies = this.fetchPiggies.bind(this)
+
+ this.state = {
+ piggies: [],
+ oracles: [],
+ auctions: [],
+ // see if this is easier with objects than arrays, for indexing purposes
+ // keys for all of these should be the PiggyID so they can easily be cross-referenced
+ pdict: {},
+ }
+
+ }
+
+ hex2a(hexx) {
+ var hex = hexx.toString();//force conversion
+ var str = '';
+ for (var i = 0; (i < hex.length && hex.substr(i, 2) !== '00'); i += 2)
+ str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
+ return str.trim();
+ }
+
+ groomID(id) {
+ return id.slice(id.lastIndexOf("0")+1)
+ }
+
+ async fetchPiggies() {
+ // fetch last 10 records as JSON
+ let lten = await fetch(endpoint)
+ let ltenjson = await lten.json()
+ // parse out token creation events and get whatever data we can get from those
+ let tokens = this.state.pdict
+ ltenjson.data.map((item) => {
+ 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
+ ?
Buy
+ : 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..66aa2de
--- /dev/null
+++ b/app/src/components/LoadingContainer/index.js
@@ -0,0 +1,85 @@
+import { drizzleConnect } from 'drizzle-react'
+import React, { Children, Component } from 'react'
+import PropTypes from 'prop-types'
+
+import logo from '../../Assets/Logo/piggieface_02.png'
+/*
+ * Create component.
+ */
+
+class LoadingContainer extends Component {
+ render() {
+ if (this.props.web3.status === 'failed')
+ {
+ if (this.props.errorComp) {
+ return this.props.errorComp
+ }
+
+ return(
+
+
+
+
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(
+
+
+
+
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(
+
+
+
+
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.]
+
+
+ )
+ }
+}
+
+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 0000000..a7707ea
Binary files /dev/null and b/app/src/logo.png differ
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 @@
+#
+
+[![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
+ }
+ }
+ }
+ }
+};