From 7efcf4496131a3cc4e639deb45cf6dcd96c7a723 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:09:01 +0200 Subject: [PATCH 01/30] WA-238 Adding confirmation and transaction model entities (Immutable Records) --- src/routes/safe/store/model/confirmation.js | 16 +++++++++++++ src/routes/safe/store/model/transaction.js | 26 +++++++++++++++++++++ src/routes/safe/store/reducer/safe.js | 4 ++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/routes/safe/store/model/confirmation.js create mode 100644 src/routes/safe/store/model/transaction.js diff --git a/src/routes/safe/store/model/confirmation.js b/src/routes/safe/store/model/confirmation.js new file mode 100644 index 0000000000..71fa560206 --- /dev/null +++ b/src/routes/safe/store/model/confirmation.js @@ -0,0 +1,16 @@ +// @flow +import { Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' +import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' + +export type ConfirmationProps = { + owner: Owner, + status: boolean, // false: not confirmed, true: confirmed +} + +export const makeConfirmation: RecordFactory = Record({ + owner: makeOwner(), + status: false, +}) + +export type Confirmation = RecordOf diff --git a/src/routes/safe/store/model/transaction.js b/src/routes/safe/store/model/transaction.js new file mode 100644 index 0000000000..83a664d09b --- /dev/null +++ b/src/routes/safe/store/model/transaction.js @@ -0,0 +1,26 @@ +// @flow +import { List, Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' + +export type TransactionProps = { + name: string, + nonce: number, + value: number, + threshold: number, + confirmations: List, + destination: string, + tx: string, +} + +export const makeTransaction: RecordFactory = Record({ + name: '', + nonce: 0, + value: 0, + confirmations: List([]), + destination: '', + tx: '', + threshold: 0, +}) + +export type Transaction = RecordOf diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index 550e9b8717..ec6543eff8 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -5,7 +5,7 @@ import addSafe, { ADD_SAFE } from '~/routes/safe/store/actions/addSafe' import updateDailyLimit, { UPDATE_DAILY_LIMIT } from '~/routes/safe/store/actions/updateDailyLimit' import { makeOwner } from '~/routes/safe/store/model/owner' import { type Safe, makeSafe } from '~/routes/safe/store/model/safe' -import { loadSafes, saveSafes } from '~/utils/localStorage' +import { load, saveSafes, SAFES_KEY } from '~/utils/localStorage' import { makeDailyLimit } from '~/routes/safe/store/model/dailyLimit' export const SAFE_REDUCER_ID = 'safes' @@ -26,7 +26,7 @@ const buildSafesFrom = (loadedSafes: Object): State => { } export const calculateInitialState = (): State => { - const storedSafes = loadSafes() + const storedSafes = load(SAFES_KEY) return storedSafes ? buildSafesFrom(storedSafes) : Map() } From 302fc1361377bb5879285b3e4fa70f7bef2a0fcd Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:10:05 +0200 Subject: [PATCH 02/30] WA-238 Refactor localStorage class allowing load data by key --- src/utils/localStorage.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/localStorage.js b/src/utils/localStorage.js index 40edc4c045..e537d38ae8 100644 --- a/src/utils/localStorage.js +++ b/src/utils/localStorage.js @@ -1,9 +1,10 @@ // @flow -const SAFES_KEY = 'SAFES' +export const SAFES_KEY = 'SAFES' +export const TX_KEY = 'TX' -export const loadSafes = () => { +export const load = (key: string) => { try { - const serializedState = localStorage.getItem(SAFES_KEY) + const serializedState = localStorage.getItem(key) if (serializedState === null) { return undefined } From 60d7f9056e792e2b56fcdbde5e8199554871afc0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:11:02 +0200 Subject: [PATCH 03/30] WA-238 Transaction tests for storing confirmations --- .../Transactions/test/transactions.builder.js | 0 .../Transactions/test/transactions.test.js | 181 ++++++++++++++++++ .../component/Transactions/transactions.js | 67 +++++++ .../safe/store/test/builder/safe.builder.js | 2 +- 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 src/routes/safe/component/Transactions/test/transactions.builder.js create mode 100644 src/routes/safe/component/Transactions/test/transactions.test.js create mode 100644 src/routes/safe/component/Transactions/transactions.js diff --git a/src/routes/safe/component/Transactions/test/transactions.builder.js b/src/routes/safe/component/Transactions/test/transactions.builder.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js new file mode 100644 index 0000000000..1f34048bc6 --- /dev/null +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -0,0 +1,181 @@ +// @flow +import { List, Map } from 'immutable' +import { createTransaction, loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { type Safe } from '~/routes/safe/store/model/safe' +import { type Owner } from '~/routes/safe/store/model/owner' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' + +const testSizeOfSafesWith = (transactions, size) => { + expect(transactions).not.toBe(undefined) + expect(transactions).not.toBe(null) + expect(transactions.size).toBe(size) +} + +const testSizeOfTransactions = (safeTxs, size) => { + if (!safeTxs) { throw new Error() } + expect(safeTxs.count()).toBe(size) + expect(safeTxs.get(0)).not.toBe(undefined) + expect(safeTxs.get(0)).not.toBe(null) +} + +const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destination, firstOwner, secondOwner) => { + if (!safeTxs) { throw new Error() } + const tx: Transaction | typeof undefined = safeTxs.get(pos) + + if (!tx) { throw new Error() } + expect(tx.get('name')).toBe(name) + expect(tx.get('value')).toBe(value) + expect(tx.get('threshold')).toBe(threshold) + expect(tx.get('destination')).toBe(destination) + expect(tx.get('confirmations').count()).toBe(2) + expect(tx.get('nonce')).toBe(nonce) + + const confirmations: List = tx.get('confirmations') + const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) + if (!firstConfirmation) { throw new Error() } + expect(firstConfirmation.get('owner')).not.toBe(undefined) + expect(firstConfirmation.get('owner')).toEqual(firstOwner) + expect(firstConfirmation.get('status')).toBe(false) + + const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) + if (!secondConfirmation) { throw new Error() } + expect(secondConfirmation.get('owner')).not.toBe(undefined) + expect(secondConfirmation.get('owner')).toEqual(secondOwner) + expect(secondConfirmation.get('status')).toBe(false) +} + +describe('Transactions Suite', () => { + let safe: Safe + let destination: string + let value: number + let owners: List + beforeEach(async () => { + localStorage.clear() + + safe = SafeFactory.twoOwnersSafe('foo', 'bar') + destination = 'baz' + value = 2 + owners = safe.get('owners') + + const firstOwner = owners.get(0) + if (!firstOwner) { throw new Error() } + const secondOwner = owners.get(1) + if (!secondOwner) { throw new Error() } + }) + + it('adds first confirmation to stored safe', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + + const safeTransactions: List | typeof undefined = transactions.get(safe.get('address')) + if (!safeTransactions) { throw new Error() } + testSizeOfTransactions(safeTransactions, 1) + + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, owners.get(0), owners.get(1)) + }) + + it('adds second confirmation to stored safe with one confirmation', async () => { + // GIVEN + const firstTxName = 'Buy butteries for project' + const firstNonce: number = Date.now() + createTransaction(firstTxName, firstNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + const secondTxName = 'Buy printers for project' + const secondNonce: number = firstNonce + 100 + createTransaction(secondTxName, secondNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + + const safeTxs: List | typeof undefined = transactions.get(safe.get('address')) + if (!safeTxs) { throw new Error() } + testSizeOfTransactions(safeTxs, 2) + + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, owners.get(0), owners.get(1)) + }) + + it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { + const txName = 'Buy batteris for Alplha project' + const nonce = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + const secondSafe = SafeFactory.dailyLimitSafe(10, 2) + const txSecondName = 'Buy batteris for Beta project' + const txSecondNonce = 10 + createTransaction( + txSecondName, txSecondNonce, destination, value, + secondSafe.get('owners'), secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + ) + + let transactions: Map> = loadSafeTransactions() + testSizeOfSafesWith(transactions, 2) + + const firstSafeTxs: List | typeof undefined = transactions.get(safe.get('address')) + if (!firstSafeTxs) { throw new Error() } + testSizeOfTransactions(firstSafeTxs, 1) + + const secondSafeTxs: List | typeof undefined = transactions.get(secondSafe.get('address')) + if (!secondSafeTxs) { throw new Error() } + testSizeOfTransactions(secondSafeTxs, 1) + + // WHEN + const txFirstName = 'Buy paper for Alplha project' + const txFirstNonce = 11 + createTransaction( + txFirstName, txFirstNonce, destination, value, + safe.get('owners'), safe.get('name'), safe.get('address'), safe.get('confirmations'), + ) + + transactions = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 2) + testSizeOfTransactions(transactions.get(safe.get('address')), 2) + testSizeOfTransactions(transactions.get(secondSafe.get('address')), 1) + + // Test 2 transactions of first safe + testTransactionFrom( + transactions.get(safe.address), 0, + txName, nonce, value, 2, destination, + owners.get(0), owners.get(1), + ) + testTransactionFrom( + transactions.get(safe.address), 1, + txFirstName, txFirstNonce, value, 2, destination, + owners.get(0), owners.get(1), + ) + + // Test one transaction of second safe + testTransactionFrom( + transactions.get(secondSafe.address), 0, + txSecondName, txSecondNonce, value, 2, destination, + secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + ) + }) + + it('does not allow to store same transaction twice', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const createTxFnc = () => createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + expect(createTxFnc).toThrow(/Transaction with same nonce/) + }) +}) + diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js new file mode 100644 index 0000000000..6b4229dfa7 --- /dev/null +++ b/src/routes/safe/component/Transactions/transactions.js @@ -0,0 +1,67 @@ +// @flow +import { List, Map } from 'immutable' +import { type Owner, makeOwner } from '~/routes/safe/store/model/owner' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' + +const buildConfirmationsFrom = (owners: List): List => + owners.map((owner: Owner) => makeConfirmation({ owner, status: false })) + +export const createTransaction = ( + name: string, + nonce: number, + destination: string, + value: number, + owners: List, + safeName: string, + safeAddress: string, + safeThreshold: number, +) => { + const confirmations: List = buildConfirmationsFrom(owners) + const transaction: Transaction = makeTransaction({ + name, nonce, value, confirmations, destination, threshold: safeThreshold, + }) + + const safeTransactions = load(TX_KEY) || {} + const transactions = safeTransactions[safeAddress] + const txsRecord = transactions ? List(transactions) : List([]) + + if (txsRecord.find((txs: TransactionProps) => txs.nonce === nonce)) { + throw new Error(`Transaction with same nonce: ${nonce} already created for safe: ${safeAddress}`) + } + + safeTransactions[safeAddress] = txsRecord.push(transaction) + + localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) +} + +export const loadSafeTransactions = () => { + const safes = load(TX_KEY) || {} + + return Map().withMutations((map: Map>) => + Object.keys(safes).map((safe: string) => { + const safeTxs = safes[safe] + const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { + const { confirmations } = tx + const txRecord = makeTransaction({ + ...tx, + confirmations: List(confirmations.map((conf: ConfirmationProps) => + makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), + }) + + return txRecord + }) + + return map.set(safe, List(safeTxsRecord)) + })) +} + +/* TO USE as a selector +export const getTransactionsOf = async (safeAddress: string) => { + const safesTransactions = loadSafeTransactions() + const safeTxs = List(safesTransactions.get(safeAddress)) + + return safeTxs +} +*/ diff --git a/src/routes/safe/store/test/builder/safe.builder.js b/src/routes/safe/store/test/builder/safe.builder.js index 95f27fb8a8..a1dcc2a708 100644 --- a/src/routes/safe/store/test/builder/safe.builder.js +++ b/src/routes/safe/store/test/builder/safe.builder.js @@ -64,7 +64,7 @@ export class SafeFactory { .get() static dailyLimitSafe = (dailyLimit: number, spentToday: number) => aSafe() - .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0026') + .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0027') .withName('Adol & Tobias Safe') .withConfirmations(2) .withOwner( From 3f77bc1dbd2cd6e8e3f243c99d6fe064a239c684 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:58:03 +0200 Subject: [PATCH 04/30] WA-238 Tests checking owners conditions --- .../Transactions/test/transactions.test.js | 71 ++++++++++++++----- .../component/Transactions/transactions.js | 34 +++++---- 2 files changed, 74 insertions(+), 31 deletions(-) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 1f34048bc6..7c6557b541 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -20,7 +20,8 @@ const testSizeOfTransactions = (safeTxs, size) => { expect(safeTxs.get(0)).not.toBe(null) } -const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destination, firstOwner, secondOwner) => { +const testTransactionFrom = +(safeTxs, pos, name, nonce, value, threshold, destination, creator, firstOwner, secondOwner) => { if (!safeTxs) { throw new Error() } const tx: Transaction | typeof undefined = safeTxs.get(pos) @@ -37,7 +38,7 @@ const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destin if (!firstConfirmation) { throw new Error() } expect(firstConfirmation.get('owner')).not.toBe(undefined) expect(firstConfirmation.get('owner')).toEqual(firstOwner) - expect(firstConfirmation.get('status')).toBe(false) + expect(firstConfirmation.get('status')).toBe(true) const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) if (!secondConfirmation) { throw new Error() } @@ -69,7 +70,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -81,18 +82,18 @@ describe('Transactions Suite', () => { if (!safeTransactions) { throw new Error() } testSizeOfTransactions(safeTransactions, 1) - testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe with one confirmation', async () => { // GIVEN const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() - createTransaction(firstTxName, firstNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -104,21 +105,21 @@ describe('Transactions Suite', () => { if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) - testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, owners.get(0), owners.get(1)) - testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 createTransaction( - txSecondName, txSecondNonce, destination, value, - secondSafe.get('owners'), secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', + secondSafe.get('owners'), '', secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -136,8 +137,8 @@ describe('Transactions Suite', () => { const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 createTransaction( - txFirstName, txFirstNonce, destination, value, - safe.get('owners'), safe.get('name'), safe.get('address'), safe.get('confirmations'), + txFirstName, txFirstNonce, destination, value, 'foo', + safe.get('owners'), '', safe.get('name'), safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -151,19 +152,19 @@ describe('Transactions Suite', () => { testTransactionFrom( transactions.get(safe.address), 0, txName, nonce, value, 2, destination, - owners.get(0), owners.get(1), + 'foo', owners.get(0), owners.get(1), ) testTransactionFrom( transactions.get(safe.address), 1, txFirstName, txFirstNonce, value, 2, destination, - owners.get(0), owners.get(1), + 'foo', owners.get(0), owners.get(1), ) // Test one transaction of second safe testTransactionFrom( transactions.get(secondSafe.address), 0, txSecondName, txSecondNonce, value, 2, destination, - secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), ) }) @@ -171,11 +172,45 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) + + it('checks the owner who creates the tx has confirmed it', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + }) + + it('checks the owner who creates the tx is an owner', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + const ownerName = 'invented' + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + + expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) + }) + + it('checks if safe has one owner transaction has been executed', async () => { + const ownerName = 'foo' + const oneOwnerSafe = SafeFactory.oneOwnerSafe(ownerName) + const txName = 'Buy butteries for project' + const nonce: number = 10 + const tx = '' + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('name'), oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + + expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) + }) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 6b4229dfa7..1bf5de411f 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -5,22 +5,39 @@ import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' -const buildConfirmationsFrom = (owners: List): List => - owners.map((owner: Owner) => makeConfirmation({ owner, status: false })) +const buildConfirmationsFrom = (owners: List, creator: string): List => { + if (!owners) { + throw new Error('This safe has no owners') + } + + if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + throw new Error('The creator of the tx is not an owner') + } + + return owners.map((owner: Owner) => makeConfirmation({ owner, status: owner.get('address') === creator })) +} export const createTransaction = ( name: string, nonce: number, destination: string, value: number, + creator: string, owners: List, + tx: string, safeName: string, safeAddress: string, safeThreshold: number, ) => { - const confirmations: List = buildConfirmationsFrom(owners) + const confirmations: List = buildConfirmationsFrom(owners, creator) + + const notMinedWhenOneOwnerSafe = owners.count() === 1 && !tx + if (notMinedWhenOneOwnerSafe) { + throw new Error('The tx should be mined before storing it in safes with one owner') + } + const transaction: Transaction = makeTransaction({ - name, nonce, value, confirmations, destination, threshold: safeThreshold, + name, nonce, value, confirmations, destination, threshold: safeThreshold, tx, }) const safeTransactions = load(TX_KEY) || {} @@ -56,12 +73,3 @@ export const loadSafeTransactions = () => { return map.set(safe, List(safeTxsRecord)) })) } - -/* TO USE as a selector -export const getTransactionsOf = async (safeAddress: string) => { - const safesTransactions = loadSafeTransactions() - const safeTxs = List(safesTransactions.get(safeAddress)) - - return safeTxs -} -*/ From 29e92ca622bd768b4c5c3b634a9aac6a8af073c8 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 08:56:49 +0200 Subject: [PATCH 05/30] WA-238 Refactor transaction tests --- .../Transactions/test/transactions.test.js | 63 ++++--------------- .../Transactions/test/transactionsHelper.js | 48 ++++++++++++++ 2 files changed, 61 insertions(+), 50 deletions(-) create mode 100644 src/routes/safe/component/Transactions/test/transactionsHelper.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 7c6557b541..23e8fea436 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -5,47 +5,7 @@ import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' -import { type Confirmation } from '~/routes/safe/store/model/confirmation' - -const testSizeOfSafesWith = (transactions, size) => { - expect(transactions).not.toBe(undefined) - expect(transactions).not.toBe(null) - expect(transactions.size).toBe(size) -} - -const testSizeOfTransactions = (safeTxs, size) => { - if (!safeTxs) { throw new Error() } - expect(safeTxs.count()).toBe(size) - expect(safeTxs.get(0)).not.toBe(undefined) - expect(safeTxs.get(0)).not.toBe(null) -} - -const testTransactionFrom = -(safeTxs, pos, name, nonce, value, threshold, destination, creator, firstOwner, secondOwner) => { - if (!safeTxs) { throw new Error() } - const tx: Transaction | typeof undefined = safeTxs.get(pos) - - if (!tx) { throw new Error() } - expect(tx.get('name')).toBe(name) - expect(tx.get('value')).toBe(value) - expect(tx.get('threshold')).toBe(threshold) - expect(tx.get('destination')).toBe(destination) - expect(tx.get('confirmations').count()).toBe(2) - expect(tx.get('nonce')).toBe(nonce) - - const confirmations: List = tx.get('confirmations') - const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) - if (!firstConfirmation) { throw new Error() } - expect(firstConfirmation.get('owner')).not.toBe(undefined) - expect(firstConfirmation.get('owner')).toEqual(firstOwner) - expect(firstConfirmation.get('status')).toBe(true) - - const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) - if (!secondConfirmation) { throw new Error() } - expect(secondConfirmation.get('owner')).not.toBe(undefined) - expect(secondConfirmation.get('owner')).toEqual(secondOwner) - expect(secondConfirmation.get('status')).toBe(false) -} +import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { let safe: Safe @@ -89,11 +49,12 @@ describe('Transactions Suite', () => { // GIVEN const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const safeAddress = safe.get('address') + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -101,7 +62,7 @@ describe('Transactions Suite', () => { // THEN testSizeOfSafesWith(transactions, 1) - const safeTxs: List | typeof undefined = transactions.get(safe.get('address')) + const safeTxs: List | typeof undefined = transactions.get(safeAddress) if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) @@ -112,24 +73,26 @@ describe('Transactions Suite', () => { it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const safeAddress = safe.address + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 + const secondSafeAddress = secondSafe.address createTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + secondSafe.get('owners'), '', secondSafe.get('name'), secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() testSizeOfSafesWith(transactions, 2) - const firstSafeTxs: List | typeof undefined = transactions.get(safe.get('address')) + const firstSafeTxs: List | typeof undefined = transactions.get(safeAddress) if (!firstSafeTxs) { throw new Error() } testSizeOfTransactions(firstSafeTxs, 1) - const secondSafeTxs: List | typeof undefined = transactions.get(secondSafe.get('address')) + const secondSafeTxs: List | typeof undefined = transactions.get(secondSafeAddress) if (!secondSafeTxs) { throw new Error() } testSizeOfTransactions(secondSafeTxs, 1) @@ -145,8 +108,8 @@ describe('Transactions Suite', () => { // THEN testSizeOfSafesWith(transactions, 2) - testSizeOfTransactions(transactions.get(safe.get('address')), 2) - testSizeOfTransactions(transactions.get(secondSafe.get('address')), 1) + testSizeOfTransactions(transactions.get(safeAddress), 2) + testSizeOfTransactions(transactions.get(secondSafeAddress), 1) // Test 2 transactions of first safe testTransactionFrom( diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/Transactions/test/transactionsHelper.js new file mode 100644 index 0000000000..6faef0f670 --- /dev/null +++ b/src/routes/safe/component/Transactions/test/transactionsHelper.js @@ -0,0 +1,48 @@ +// @flow +import { List, Map } from 'immutable' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { type Owner } from '~/routes/safe/store/model/owner' + +export const testSizeOfSafesWith = (transactions: Map>, size: number) => { + expect(transactions).not.toBe(undefined) + expect(transactions).not.toBe(null) + expect(transactions.size).toBe(size) +} + +export const testSizeOfTransactions = (safeTxs: List | typeof undefined, size: number) => { + if (!safeTxs) { throw new Error() } + expect(safeTxs.count()).toBe(size) + expect(safeTxs.get(0)).not.toBe(undefined) + expect(safeTxs.get(0)).not.toBe(null) +} + +export const testTransactionFrom = ( + safeTxs: List | typeof undefined, pos: number, name: string, + nonce: number, value: number, threshold: number, destination: string, + creator: string, firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, +) => { + if (!safeTxs) { throw new Error() } + const tx: Transaction | typeof undefined = safeTxs.get(pos) + + if (!tx) { throw new Error() } + expect(tx.get('name')).toBe(name) + expect(tx.get('value')).toBe(value) + expect(tx.get('threshold')).toBe(threshold) + expect(tx.get('destination')).toBe(destination) + expect(tx.get('confirmations').count()).toBe(2) + expect(tx.get('nonce')).toBe(nonce) + + const confirmations: List = tx.get('confirmations') + const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) + if (!firstConfirmation) { throw new Error() } + expect(firstConfirmation.get('owner')).not.toBe(undefined) + expect(firstConfirmation.get('owner')).toEqual(firstOwner) + expect(firstConfirmation.get('status')).toBe(true) + + const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) + if (!secondConfirmation) { throw new Error() } + expect(secondConfirmation.get('owner')).not.toBe(undefined) + expect(secondConfirmation.get('owner')).toEqual(secondOwner) + expect(secondConfirmation.get('status')).toBe(false) +} From bd2e6b70a5fa753e5843cf01e1887e9b558c1038 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 09:21:56 +0200 Subject: [PATCH 06/30] WA-238 Allowing set a Daily Limit of 0 when creating a Safe --- src/components/forms/validator.js | 2 +- src/routes/open/components/SafeForm/DailyLimit/index.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index 8637f158a9..fbc72d67aa 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -17,7 +17,7 @@ export const greaterThan = (min: number) => (value: string) => { } export const minValue = (min: number) => (value: string) => { - if (Number.isNaN(Number(value)) || Number.parseInt(value, 10) >= Number(min)) { + if (Number.isNaN(Number(value)) || Number.parseFloat(value) >= Number(min)) { return undefined } diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx index 83c4ff6b55..34dbd15322 100644 --- a/src/routes/open/components/SafeForm/DailyLimit/index.jsx +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan } from '~/components/forms/validator' +import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' @@ -12,7 +12,7 @@ const DailyLimit = () => ( name={FIELD_DAILY_LIMIT} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0))} + validate={composeValidators(required, mustBeNumber, minValue(0))} placeholder="Daily Limit*" text="Daily Limit" /> From ec25ae276e8d989e573792790418f8ae4e18ff4e Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 09:22:38 +0200 Subject: [PATCH 07/30] WA-238 Updating contracts and removing old ones --- .../build/contracts/CreateAndAddModules.json | 8 +- .../build/contracts/DailyLimitModule.json | 8 +- .../DailyLimitModuleWithSignature.json | 8 +- .../contracts/GnosisSafePersonalEdition.json | 8 +- .../contracts/GnosisSafeTeamEdition.json | 8 +- .../build/contracts/Migrations.json | 8 +- safe-contracts/build/contracts/MultiSend.json | 8 +- .../build/contracts/ProxyFactory.json | 8 +- .../build/contracts/SocialRecoveryModule.json | 8 +- .../build/contracts/StateChannelModule.json | 8 +- .../build/contracts/WhitelistModule.json | 8 +- .../contracts/v0/CreateAndAddExtension.json | 1215 - .../contracts/v0/DailyLimitExtension.json | 9134 ------ .../build/contracts/v0/Extension.json | 531 - .../build/contracts/v0/GnosisSafe.json | 25235 ---------------- .../build/contracts/v0/Migrations.json | 1397 - .../build/contracts/v0/MultiSend.json | 365 - .../build/contracts/v0/MultiSendStruct.json | 1678 - safe-contracts/build/contracts/v0/Proxy.json | 644 - .../build/contracts/v0/ProxyFactory.json | 1014 - .../contracts/v0/SocialRecoveryExtension.json | 9121 ------ .../contracts/v0/WhitelistExtension.json | 5406 ---- 22 files changed, 77 insertions(+), 55751 deletions(-) delete mode 100644 safe-contracts/build/contracts/v0/CreateAndAddExtension.json delete mode 100644 safe-contracts/build/contracts/v0/DailyLimitExtension.json delete mode 100644 safe-contracts/build/contracts/v0/Extension.json delete mode 100644 safe-contracts/build/contracts/v0/GnosisSafe.json delete mode 100644 safe-contracts/build/contracts/v0/Migrations.json delete mode 100644 safe-contracts/build/contracts/v0/MultiSend.json delete mode 100644 safe-contracts/build/contracts/v0/MultiSendStruct.json delete mode 100644 safe-contracts/build/contracts/v0/Proxy.json delete mode 100644 safe-contracts/build/contracts/v0/ProxyFactory.json delete mode 100644 safe-contracts/build/contracts/v0/SocialRecoveryExtension.json delete mode 100644 safe-contracts/build/contracts/v0/WhitelistExtension.json diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index e9fe806dec..c7a8d05668 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1264,8 +1264,14 @@ "links": {}, "address": "0x0dfc419b1f993f1d14459f802c5f4966a50640fe", "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", + "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.531Z" + "updatedAt": "2018-05-22T07:20:22.992Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 8d34a185d6..2642d89c58 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -7999,8 +7999,14 @@ "links": {}, "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", + "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.523Z" + "updatedAt": "2018-05-22T07:20:22.997Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index e58738e8ed..3066be149d 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -2554,8 +2554,14 @@ "links": {}, "address": "0xdb5a513347baaf6454bdfcb439d6c712c52a754e", "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x924ca341d09a83622d62128543b45530d43afa51", + "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.518Z" + "updatedAt": "2018-05-22T07:20:22.991Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index c799fb76ee..d4ed103119 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -8234,8 +8234,14 @@ "links": {}, "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", + "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.509Z" + "updatedAt": "2018-05-22T07:20:22.972Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index cf6a3a087c..ab782635f4 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6682,8 +6682,14 @@ "links": {}, "address": "0xac64aef07af9275b66107f36039a47592c6507f8", "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", + "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.516Z" + "updatedAt": "2018-05-22T07:20:22.969Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index eabe9c301b..0d472f6174 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1404,8 +1404,14 @@ "links": {}, "address": "0x6ff07ab4d4ecb8339dee6bd028e379c2a1992103", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.532Z" + "updatedAt": "2018-05-22T07:20:22.994Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 5dc2904d69..f0f87b651e 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -360,8 +360,14 @@ "links": {}, "address": "0x20658014abeebf3f064bf4442a5cd160143b800e", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.531Z" + "updatedAt": "2018-05-22T07:20:22.989Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index c0fd4e62fd..acb924b3d0 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -1011,8 +1011,14 @@ "links": {}, "address": "0xf7f9b14921d4723eae3a8b29784c100301f6d8b8", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.507Z" + "updatedAt": "2018-05-22T07:20:22.967Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index f7bb8824db..e36e344b24 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7048,8 +7048,14 @@ "links": {}, "address": "0x1a92687d3982d12a985c4c35447673ff1fd312d1", "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", + "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.527Z" + "updatedAt": "2018-05-22T07:20:22.987Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index da3df3545f..6256c4bbe3 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5589,8 +5589,14 @@ "links": {}, "address": "0xb9597dbd8ed0c4c481d1677b3200b8c4d342750c", "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x79933939f70a2707380e371524050ecf6477da74", + "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.513Z" + "updatedAt": "2018-05-22T07:20:22.977Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index e82217b357..7bb8999069 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4046,8 +4046,14 @@ "links": {}, "address": "0x5fde4f39a944859214e24311ad809166d35b2595", "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", + "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.529Z" + "updatedAt": "2018-05-22T07:20:22.983Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/CreateAndAddExtension.json b/safe-contracts/build/contracts/v0/CreateAndAddExtension.json deleted file mode 100644 index c2f8f757a7..0000000000 --- a/safe-contracts/build/contracts/v0/CreateAndAddExtension.json +++ /dev/null @@ -1,1215 +0,0 @@ -{ - "contractName": "CreateAndAddExtension", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "extension", - "type": "address" - } - ], - "name": "addExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "proxyFactory", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createAndAddExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b61023f8061001e6000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", - "deployedBytecode": "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", - "sourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;436:8;;;638:196;732:19;754:35;770:12;784:4;754:15;:35::i;:::-;732:57;;799:4;:17;;;817:9;799:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;:::o;840:414::-;933:19;1011:4;1005:5;1109:4;1101:6;1094:4;1088:5;1081:4;1075;1071:3;1057:12;1053:1;1049:3;1036:12;1132:1;1127:23;;;;1029:121;;1127:23;1146:1;1143;1136:6;1029:121;;1195:42;1186:6;1180:5;1176:3;1163:75;;977:271;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\n\n\n/// @title Create and Add Extension - Allows to create and add a new extension in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddExtension {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param extension Not used.\n function addExtension(Extension extension)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new extension in one transaction.\n /// @param proxyFactory Extension factory contract.\n /// @param data Extension constructor payload.\n function createAndAddExtension(address proxyFactory, bytes data)\n public\n {\n Extension extension = createExtension(proxyFactory, data);\n this.addExtension(extension);\n }\n\n function createExtension(address proxyFactory, bytes data)\n internal\n returns (Extension extension)\n {\n assembly {\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 { revert(0, 0) }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "exportedSymbols": { - "CreateAndAddExtension": [ - 2006 - ] - }, - "id": 2007, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1963, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:8" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1964, - "nodeType": "ImportDirective", - "scope": 2007, - "sourceUnit": 19, - "src": "24:26:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 2006, - "linearizedBaseContracts": [ - 2006 - ], - "name": "CreateAndAddExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1972, - "nodeType": "Block", - "src": "426:25:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1969, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2093, - "src": "436:6:8", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "436:8:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1971, - "nodeType": "ExpressionStatement", - "src": "436:8:8" - } - ] - }, - "id": 1973, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1967, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1966, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1973, - "src": "386:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1965, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "386:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "385:21:8" - }, - "payable": false, - "returnParameters": { - "id": 1968, - "nodeType": "ParameterList", - "parameters": [], - "src": "426:0:8" - }, - "scope": 2006, - "src": "364:87:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1993, - "nodeType": "Block", - "src": "722:112:8", - "statements": [ - { - "assignments": [ - 1981 - ], - "declarations": [ - { - "constant": false, - "id": 1981, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "732:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1980, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "732:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1986, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1983, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "770:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1984, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "784:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1982, - "name": "createExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "754:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", - "typeString": "function (address,bytes memory) returns (contract Extension)" - } - }, - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "754:35:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "732:57:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1990, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "817:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 1987, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "799:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", - "typeString": "contract CreateAndAddExtension" - } - }, - "id": 1989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addExtension", - "nodeType": "MemberAccess", - "referencedDeclaration": 1973, - "src": "799:17:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", - "typeString": "function (contract Extension) external" - } - }, - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "799:28:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1992, - "nodeType": "ExpressionStatement", - "src": "799:28:8" - } - ] - }, - "id": 1994, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1978, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1975, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "669:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1974, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "669:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1977, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "691:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1976, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "691:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "668:34:8" - }, - "payable": false, - "returnParameters": { - "id": 1979, - "nodeType": "ParameterList", - "parameters": [], - "src": "722:0:8" - }, - "scope": 2006, - "src": "638:196:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2004, - "nodeType": "Block", - "src": "958:296:8", - "statements": [ - { - "externalReferences": [ - { - "extension": { - "declaration": 2001, - "isOffset": false, - "isSlot": false, - "src": "1163:9:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1075:4:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1094:4:8", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1996, - "isOffset": false, - "isSlot": false, - "src": "1057:12:8", - "valueSize": 1 - } - } - ], - "id": 2003, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "968:286:8" - } - ] - }, - "id": 2005, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1999, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1996, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "865:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1995, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "865:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1998, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "887:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1997, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "887:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "864:34:8" - }, - "payable": false, - "returnParameters": { - "id": 2002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2001, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "933:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 2000, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "933:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "932:21:8" - }, - "scope": 2006, - "src": "840:414:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2007, - "src": "199:1057:8" - } - ], - "src": "0:1257:8" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "exportedSymbols": { - "CreateAndAddExtension": [ - 2006 - ] - }, - "id": 2007, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1963, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:8" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1964, - "nodeType": "ImportDirective", - "scope": 2007, - "sourceUnit": 19, - "src": "24:26:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 2006, - "linearizedBaseContracts": [ - 2006 - ], - "name": "CreateAndAddExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1972, - "nodeType": "Block", - "src": "426:25:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1969, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2093, - "src": "436:6:8", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "436:8:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1971, - "nodeType": "ExpressionStatement", - "src": "436:8:8" - } - ] - }, - "id": 1973, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1967, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1966, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1973, - "src": "386:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1965, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "386:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "385:21:8" - }, - "payable": false, - "returnParameters": { - "id": 1968, - "nodeType": "ParameterList", - "parameters": [], - "src": "426:0:8" - }, - "scope": 2006, - "src": "364:87:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1993, - "nodeType": "Block", - "src": "722:112:8", - "statements": [ - { - "assignments": [ - 1981 - ], - "declarations": [ - { - "constant": false, - "id": 1981, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "732:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1980, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "732:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1986, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1983, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "770:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1984, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "784:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1982, - "name": "createExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "754:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", - "typeString": "function (address,bytes memory) returns (contract Extension)" - } - }, - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "754:35:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "732:57:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1990, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "817:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 1987, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "799:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", - "typeString": "contract CreateAndAddExtension" - } - }, - "id": 1989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addExtension", - "nodeType": "MemberAccess", - "referencedDeclaration": 1973, - "src": "799:17:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", - "typeString": "function (contract Extension) external" - } - }, - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "799:28:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1992, - "nodeType": "ExpressionStatement", - "src": "799:28:8" - } - ] - }, - "id": 1994, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1978, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1975, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "669:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1974, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "669:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1977, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "691:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1976, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "691:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "668:34:8" - }, - "payable": false, - "returnParameters": { - "id": 1979, - "nodeType": "ParameterList", - "parameters": [], - "src": "722:0:8" - }, - "scope": 2006, - "src": "638:196:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2004, - "nodeType": "Block", - "src": "958:296:8", - "statements": [ - { - "externalReferences": [ - { - "extension": { - "declaration": 2001, - "isOffset": false, - "isSlot": false, - "src": "1163:9:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1075:4:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1094:4:8", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1996, - "isOffset": false, - "isSlot": false, - "src": "1057:12:8", - "valueSize": 1 - } - } - ], - "id": 2003, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "968:286:8" - } - ] - }, - "id": 2005, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1999, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1996, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "865:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1995, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "865:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1998, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "887:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1997, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "887:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "864:34:8" - }, - "payable": false, - "returnParameters": { - "id": 2002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2001, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "933:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 2000, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "933:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "932:21:8" - }, - "scope": 2006, - "src": "840:414:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2007, - "src": "199:1057:8" - } - ], - "src": "0:1257:8" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xb19cd8c86c13dcade8f680a67e49aaa48c0817a9", - "transactionHash": "0x11ae4fbe0e73a77a68f8229c126331e9fb4e6ff09ebee7e8b60890913a1ca440" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xce33c528bca2944d25eeadf7107a896018702a98", - "transactionHash": "0x99b20dea53ddbbb9757e414a9a36289c379203be870619b55af681ee86d3b953" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x69c1cca644134e10f5f82fc28b3d45e136786dfc", - "transactionHash": "0x2af139a9359ac4b51195eab08a5958d134195ea3793c8851e63b2657d6b1a1be" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xa8fd8a2a990b5a5b300a6dc712d1b85b5574ffd9", - "transactionHash": "0x9477126b8b58fd22addc14218038766bb1723de3027fa4db33decd381eeb1b2d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.024Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/DailyLimitExtension.json b/safe-contracts/build/contracts/v0/DailyLimitExtension.json deleted file mode 100644 index e9fcb85849..0000000000 --- a/safe-contracts/build/contracts/v0/DailyLimitExtension.json +++ /dev/null @@ -1,9134 +0,0 @@ -{ - "contractName": "DailyLimitExtension", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "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": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "dailyLimits", - "outputs": [ - { - "name": "dailyLimit", - "type": "uint256" - }, - { - "name": "spentToday", - "type": "uint256" - }, - { - "name": "lastDay", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "dailyLimit", - "type": "uint256" - } - ], - "name": "changeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "today", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b604051610dbf380380610dbf833981016040528080518201919060200180518201919050506100518282610058640100000000026104e2176401000000009004565b5050610176565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156100a057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156101715781818151811015156100fd57fe5b9060200190602002015160026000858481518110151561011957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506100e6565b505050565b610c3a806101856000396000f3006060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", - "deployedBytecode": "0x6060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", - "sourceMap": "247:5028:5:-;;;1209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:27;1315:6;1323:12;1309:5;;;;;:27;;;:::i;:::-;1209:134;;247:5028;;1585:424;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;247:5028::-;;;;;;;", - "deployedSourceMap": "247:5028:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:1338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;355:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424:5;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;401:67::-;;;:::o;2155:186::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2298:1;2282:11;2274:25;;;;2266:34;;;;;;;;2323:11;2310:10;;:24;;;;;;;;;;;;;;;;;;2155:186;:::o;2569:162::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2714:10;2682:11;:18;2694:5;2682:18;;;;;;;;;;;;;;;:29;;:42;;;;2569:162;;:::o;296:53::-;;;;;;;;;;;;;;;;;;;;:::o;511:28::-;;;;;;;;;;;;;:::o;5157:116::-;5219:4;5259:6;5253:3;:12;;;;;;;;5246:3;:20;5239:27;;5157:116;:::o;3233:1338::-;3397:4;3744:13;3767:16;3793:14;3980:25;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;3502:10;;;;;;;;;;;:18;;;3521:6;3502:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:35;;;;;;;;3560:25;3547:38;;;;;;;;:9;:38;;;;;;;;;3539:47;;;;;;;;3686:1;3671:4;:11;:16;:29;;;;;3699:1;3691:5;:9;3671:29;:62;;;;3718:1;3704:4;:11;:15;:29;;;;;3732:1;3723:5;:10;3704:29;3671:62;3663:71;;;;;;;;3836:1;3821:4;:11;:16;3817:470;;;3861:1;3853:9;;3887:2;3876:13;;3912:5;3903:14;;3817:470;;;3964:2;3956:10;;4084:4;4078;4074:3;4068:5;4046:44;;4135:4;4129;4125:3;4119:5;4107:34;;4184:4;4178;4174:3;4168:5;4158:32;;4247:28;4225:50;;;:18;:50;;;;4217:59;;;;;;;;3817:470;4316:1;4304:8;:13;;;;4296:22;;;;;;;;4345:1;4336:6;:10;4328:19;;;;;;;;4425:27;4438:5;4445:6;4425:12;:27::i;:::-;4421:122;;;4501:6;4468:11;:18;4480:5;4468:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;4528:4;4521:11;;;;4421:122;4559:5;4552:12;;874:1;3233:1338;;;;;;;;;;;:::o;617:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:40::-;;;;;;;;;;;;;;;;;;;;:::o;4577:488::-;4664:4;4684:29;4716:11;:18;4728:5;4716:18;;;;;;;;;;;;;;;4684:50;;4758:10;:18;;;4748:7;:5;:7::i;:::-;:28;4744:126;;;4813:7;:5;:7::i;:::-;4792:10;:18;;:28;;;;4858:1;4834:10;:21;;:25;;;;4744:126;4920:10;:21;;;4910:6;4886:10;:21;;;:30;:55;;:125;;;;;4990:10;:21;;;4981:6;4957:10;:21;;;:30;:54;4886:125;4879:157;;;5032:4;5025:11;;;;4879:157;5053:5;5046:12;;4577:488;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitExtension is Extension {\n\n string public constant NAME = \"Daily Limit Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n DailyLimitExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smallest unit (e.g. Wei for Ether). \n /// First entry of array corresponds to first entry in token address array.\n function DailyLimitExtension(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setup(tokens, _dailyLimits);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(DailyLimitExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n onlyGnosisSafe\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n if (isUnderLimit(token, amount)) {\n dailyLimits[token].spentToday += amount;\n return true;\n }\n return false;\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "exportedSymbols": { - "DailyLimitExtension": [ - 1418 - ] - }, - "id": 1419, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1083, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:5" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1084, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 19, - "src": "24:26:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1085, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 964, - "src": "51:27:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1086, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "279:9:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1087, - "nodeType": "InheritanceSpecifier", - "src": "279:9:5" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1418, - "linearizedBaseContracts": [ - 1418, - 18 - ], - "name": "DailyLimitExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1090, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "296:53:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1088, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "296:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4461696c79204c696d697420457874656e73696f6e", - "id": 1089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "326:23:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", - "typeString": "literal_string \"Daily Limit Extension\"" - }, - "value": "Daily Limit Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1093, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "355:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1091, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "355:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "388:7:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1096, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "401:67:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1094, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "401:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1095, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "455:13:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1098, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "475:30:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1097, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "475:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1100, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "511:28:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1099, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "511:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1104, - "name": "dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "617:50:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "typeName": { - "id": 1103, - "keyType": { - "id": 1101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "617:31:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "valueType": { - "contractScope": null, - "id": 1102, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "637:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "DailyLimitExtension.DailyLimit", - "id": 1111, - "members": [ - { - "constant": false, - "id": 1106, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "702:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1105, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "702:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1108, - "name": "spentToday", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "730:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "730:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1110, - "name": "lastDay", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "758:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1109, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "758:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "DailyLimit", - "nodeType": "StructDefinition", - "scope": 1418, - "src": "674:106:5", - "visibility": "public" - }, - { - "body": { - "id": 1123, - "nodeType": "Block", - "src": "812:70:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1114, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "830:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "830:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "852:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "844:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "844:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "830:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1113, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "822:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "822:42:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1121, - "nodeType": "ExpressionStatement", - "src": "822:42:5" - }, - { - "id": 1122, - "nodeType": "PlaceholderStatement", - "src": "874:1:5" - } - ] - }, - "id": 1124, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1112, - "nodeType": "ParameterList", - "parameters": [], - "src": "809:2:5" - }, - "src": "786:96:5", - "visibility": "internal" - }, - { - "body": { - "id": 1138, - "nodeType": "Block", - "src": "1299:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1134, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1127, - "src": "1315:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1135, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1323:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - ], - "id": 1133, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "1309:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint256[] memory)" - } - }, - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1309:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1137, - "nodeType": "ExpressionStatement", - "src": "1309:27:5" - } - ] - }, - "id": 1139, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "DailyLimitExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1131, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1127, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1238:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1238:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1126, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1238:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1130, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1256:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1256:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1129, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1256:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1237:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1132, - "nodeType": "ParameterList", - "parameters": [], - "src": "1299:0:5" - }, - "scope": 1418, - "src": "1209:134:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1186, - "nodeType": "Block", - "src": "1661:348:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1150, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1823:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1815:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1815:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1838:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1815:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1807:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1807:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1155, - "nodeType": "ExpressionStatement", - "src": "1807:33:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1156, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1850:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1158, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1874:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1874:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1157, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1863:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1863:22:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1850:35:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "1850:35:5" - }, - { - "body": { - "expression": { - "argumentTypes": null, - "id": 1183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1174, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "1951:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1178, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1175, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1963:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1177, - "indexExpression": { - "argumentTypes": null, - "id": 1176, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1970:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1963:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1951:22:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "1951:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1180, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1145, - "src": "1987:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 1182, - "indexExpression": { - "argumentTypes": null, - "id": 1181, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "2000:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1987:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1951:51:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1184, - "nodeType": "ExpressionStatement", - "src": "1951:51:5" - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1167, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1915:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1168, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1919:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1919:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1915:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1185, - "initializationExpression": { - "assignments": [ - 1164 - ], - "declarations": [ - { - "constant": false, - "id": 1164, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1900:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1163, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1900:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1166, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1900:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1934:3:5", - "subExpression": { - "argumentTypes": null, - "id": 1171, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1934:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1173, - "nodeType": "ExpressionStatement", - "src": "1934:3:5" - }, - "nodeType": "ForStatement", - "src": "1895:107:5" - } - ] - }, - "id": 1187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1146, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1142, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1600:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1140, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1600:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1141, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1600:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1145, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1618:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1618:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1144, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1618:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1599:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1147, - "nodeType": "ParameterList", - "parameters": [], - "src": "1661:0:5" - }, - "scope": 1418, - "src": "1585:424:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1206, - "nodeType": "Block", - "src": "2256:85:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2282:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - ], - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2274:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2274:20:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2298:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2274:25:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2266:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:34:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1201, - "nodeType": "ExpressionStatement", - "src": "2266:34:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "2310:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2323:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "src": "2310:24:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "2310:24:5" - } - ] - }, - "id": 1207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1192, - "modifierName": { - "argumentTypes": null, - "id": 1191, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2237:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2237:14:5" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1207, - "src": "2181:31:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1188, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "2181:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2180:33:5" - }, - "payable": false, - "returnParameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [], - "src": "2256:0:5" - }, - "scope": 1418, - "src": "2155:186:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1223, - "nodeType": "Block", - "src": "2672:59:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1216, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "2682:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1218, - "indexExpression": { - "argumentTypes": null, - "id": 1217, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "2694:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2682:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1219, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "2682:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1220, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1211, - "src": "2714:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2682:42:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1222, - "nodeType": "ExpressionStatement", - "src": "2682:42:5" - } - ] - }, - "id": 1224, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1214, - "modifierName": { - "argumentTypes": null, - "id": 1213, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2653:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2653:14:5" - } - ], - "name": "changeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1209, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2595:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2595:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1211, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2610:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2610:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2594:35:5" - }, - "payable": false, - "returnParameters": { - "id": 1215, - "nodeType": "ParameterList", - "parameters": [], - "src": "2672:0:5" - }, - "scope": 1418, - "src": "2569:162:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1347, - "nodeType": "Block", - "src": "3407:1164:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1244, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1226, - "src": "3521:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1242, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "3502:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3502:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3502:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1241, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3494:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3494:35:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1247, - "nodeType": "ExpressionStatement", - "src": "3494:35:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1249, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "3547:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1250, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3560:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3560:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3560:25:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3547:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1248, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3539:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3539:47:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1255, - "nodeType": "ExpressionStatement", - "src": "3539:47:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1257, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3671:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3671:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3686:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3671:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1261, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3691:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3699:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3691:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1265, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3704:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3704:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3718:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3704:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1269, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3723:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3732:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3723:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3704:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1256, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3663:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:71:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1275, - "nodeType": "ExpressionStatement", - "src": "3663:71:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1277, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3744:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1276, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3744:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1278, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3744:13:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1280, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3767:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3767:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1281, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3767:16:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1283, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3793:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1282, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3793:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1284, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3793:14:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3821:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3821:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3821:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1316, - "nodeType": "Block", - "src": "3942:345:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1302, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3956:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1303, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3964:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3956:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1305, - "nodeType": "ExpressionStatement", - "src": "3956:10:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1307, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3980:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1306, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3980:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1308, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3980:25:5" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1307, - "isOffset": false, - "isSlot": false, - "src": "4046:18:5", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1283, - "isOffset": false, - "isSlot": false, - "src": "4158:6:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4078:4:5", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1280, - "isOffset": false, - "isSlot": false, - "src": "4107:8:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4129:4:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4178:4:5", - "valueSize": 1 - } - } - ], - "id": 1309, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "4019:205:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1311, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "4225:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1312, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "4247:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4225:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1310, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4217:59:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1315, - "nodeType": "ExpressionStatement", - "src": "4217:59:5" - } - ] - }, - "id": 1317, - "nodeType": "IfStatement", - "src": "3817:470:5", - "trueBody": { - "id": 1301, - "nodeType": "Block", - "src": "3839:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1289, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3853:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3861:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3853:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "3853:9:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1293, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "3876:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1294, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3887:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3876:13:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1296, - "nodeType": "ExpressionStatement", - "src": "3876:13:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1297, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "3903:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1298, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3912:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3903:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1300, - "nodeType": "ExpressionStatement", - "src": "3903:14:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1319, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "4304:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4316:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4304:13:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4296:22:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1323, - "nodeType": "ExpressionStatement", - "src": "4296:22:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1325, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4336:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1326, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4345:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4336:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1324, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4328:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4328:19:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1329, - "nodeType": "ExpressionStatement", - "src": "4328:19:5" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1331, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4438:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1332, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4445:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1330, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "4425:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4425:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1344, - "nodeType": "IfStatement", - "src": "4421:122:5", - "trueBody": { - "id": 1343, - "nodeType": "Block", - "src": "4454:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1334, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4468:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1336, - "indexExpression": { - "argumentTypes": null, - "id": 1335, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4480:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4468:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4468:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1338, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4501:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4468:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1340, - "nodeType": "ExpressionStatement", - "src": "4468:39:5" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4528:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1240, - "id": 1342, - "nodeType": "Return", - "src": "4521:11:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4559:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1240, - "id": 1346, - "nodeType": "Return", - "src": "4552:12:5" - } - ] - }, - "id": 1348, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "3365:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3365:14:5" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1226, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3255:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1225, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3255:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1228, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3271:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1227, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3271:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1230, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3283:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3283:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1232, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3298:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1231, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3298:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3310:30:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1233, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3310:20:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3254:87:5" - }, - "payable": false, - "returnParameters": { - "id": 1240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1239, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3397:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1238, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3397:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3396:6:5" - }, - "scope": 1418, - "src": "3233:1338:5", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1403, - "nodeType": "Block", - "src": "4674:391:5", - "statements": [ - { - "assignments": [ - 1358 - ], - "declarations": [ - { - "constant": false, - "id": 1358, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4684:29:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - }, - "typeName": { - "contractScope": null, - "id": 1357, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "4684:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1362, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1359, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4716:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1361, - "indexExpression": { - "argumentTypes": null, - "id": 1360, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1350, - "src": "4728:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4716:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4684:50:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1363, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4748:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4748:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1365, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4758:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1366, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4758:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4748:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1382, - "nodeType": "IfStatement", - "src": "4744:126:5", - "trueBody": { - "id": 1381, - "nodeType": "Block", - "src": "4778:92:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1368, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4792:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4792:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1371, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4813:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4813:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4792:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4792:28:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1375, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4834:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1377, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4834:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4858:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4834:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1380, - "nodeType": "ExpressionStatement", - "src": "4834:25:5" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1383, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4886:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1384, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4886:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4910:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1387, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4920:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1388, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "4920:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:55:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1390, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4957:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1391, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4957:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1392, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4981:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1394, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4990:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4990:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:54:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4886:125:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1400, - "nodeType": "IfStatement", - "src": "4879:157:5", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5032:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1356, - "id": 1399, - "nodeType": "Return", - "src": "5025:11:5" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5053:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1356, - "id": 1402, - "nodeType": "Return", - "src": "5046:12:5" - } - ] - }, - "id": 1404, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isUnderLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1350, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4599:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1349, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4599:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1352, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4614:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4614:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4598:31:5" - }, - "payable": false, - "returnParameters": { - "id": 1356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1355, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4664:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1354, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4664:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4663:6:5" - }, - "scope": 1418, - "src": "4577:488:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1416, - "nodeType": "Block", - "src": "5229:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1409, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5246:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1410, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5253:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5259:6:5", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "5253:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1413, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5252:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5246:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1408, - "id": 1415, - "nodeType": "Return", - "src": "5239:27:5" - } - ] - }, - "id": 1417, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "today", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1405, - "nodeType": "ParameterList", - "parameters": [], - "src": "5171:2:5" - }, - "payable": false, - "returnParameters": { - "id": 1408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1417, - "src": "5219:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1406, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5219:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5218:6:5" - }, - "scope": 1418, - "src": "5157:116:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1419, - "src": "247:5028:5" - } - ], - "src": "0:5276:5" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "exportedSymbols": { - "DailyLimitExtension": [ - 1418 - ] - }, - "id": 1419, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1083, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:5" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1084, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 19, - "src": "24:26:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1085, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 964, - "src": "51:27:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1086, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "279:9:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1087, - "nodeType": "InheritanceSpecifier", - "src": "279:9:5" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1418, - "linearizedBaseContracts": [ - 1418, - 18 - ], - "name": "DailyLimitExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1090, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "296:53:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1088, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "296:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4461696c79204c696d697420457874656e73696f6e", - "id": 1089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "326:23:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", - "typeString": "literal_string \"Daily Limit Extension\"" - }, - "value": "Daily Limit Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1093, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "355:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1091, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "355:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "388:7:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1096, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "401:67:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1094, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "401:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1095, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "455:13:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1098, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "475:30:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1097, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "475:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1100, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "511:28:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1099, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "511:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1104, - "name": "dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "617:50:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "typeName": { - "id": 1103, - "keyType": { - "id": 1101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "617:31:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "valueType": { - "contractScope": null, - "id": 1102, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "637:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "DailyLimitExtension.DailyLimit", - "id": 1111, - "members": [ - { - "constant": false, - "id": 1106, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "702:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1105, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "702:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1108, - "name": "spentToday", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "730:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "730:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1110, - "name": "lastDay", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "758:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1109, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "758:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "DailyLimit", - "nodeType": "StructDefinition", - "scope": 1418, - "src": "674:106:5", - "visibility": "public" - }, - { - "body": { - "id": 1123, - "nodeType": "Block", - "src": "812:70:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1114, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "830:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "830:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "852:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "844:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "844:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "830:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1113, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "822:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "822:42:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1121, - "nodeType": "ExpressionStatement", - "src": "822:42:5" - }, - { - "id": 1122, - "nodeType": "PlaceholderStatement", - "src": "874:1:5" - } - ] - }, - "id": 1124, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1112, - "nodeType": "ParameterList", - "parameters": [], - "src": "809:2:5" - }, - "src": "786:96:5", - "visibility": "internal" - }, - { - "body": { - "id": 1138, - "nodeType": "Block", - "src": "1299:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1134, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1127, - "src": "1315:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1135, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1323:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - ], - "id": 1133, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "1309:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint256[] memory)" - } - }, - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1309:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1137, - "nodeType": "ExpressionStatement", - "src": "1309:27:5" - } - ] - }, - "id": 1139, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "DailyLimitExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1131, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1127, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1238:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1238:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1126, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1238:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1130, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1256:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1256:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1129, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1256:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1237:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1132, - "nodeType": "ParameterList", - "parameters": [], - "src": "1299:0:5" - }, - "scope": 1418, - "src": "1209:134:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1186, - "nodeType": "Block", - "src": "1661:348:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1150, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1823:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1815:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1815:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1838:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1815:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1807:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1807:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1155, - "nodeType": "ExpressionStatement", - "src": "1807:33:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1156, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1850:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1158, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1874:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1874:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1157, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1863:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1863:22:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1850:35:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "1850:35:5" - }, - { - "body": { - "expression": { - "argumentTypes": null, - "id": 1183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1174, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "1951:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1178, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1175, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1963:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1177, - "indexExpression": { - "argumentTypes": null, - "id": 1176, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1970:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1963:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1951:22:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "1951:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1180, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1145, - "src": "1987:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 1182, - "indexExpression": { - "argumentTypes": null, - "id": 1181, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "2000:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1987:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1951:51:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1184, - "nodeType": "ExpressionStatement", - "src": "1951:51:5" - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1167, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1915:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1168, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1919:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1919:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1915:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1185, - "initializationExpression": { - "assignments": [ - 1164 - ], - "declarations": [ - { - "constant": false, - "id": 1164, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1900:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1163, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1900:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1166, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1900:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1934:3:5", - "subExpression": { - "argumentTypes": null, - "id": 1171, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1934:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1173, - "nodeType": "ExpressionStatement", - "src": "1934:3:5" - }, - "nodeType": "ForStatement", - "src": "1895:107:5" - } - ] - }, - "id": 1187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1146, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1142, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1600:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1140, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1600:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1141, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1600:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1145, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1618:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1618:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1144, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1618:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1599:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1147, - "nodeType": "ParameterList", - "parameters": [], - "src": "1661:0:5" - }, - "scope": 1418, - "src": "1585:424:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1206, - "nodeType": "Block", - "src": "2256:85:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2282:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - ], - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2274:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2274:20:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2298:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2274:25:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2266:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:34:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1201, - "nodeType": "ExpressionStatement", - "src": "2266:34:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "2310:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2323:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "src": "2310:24:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "2310:24:5" - } - ] - }, - "id": 1207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1192, - "modifierName": { - "argumentTypes": null, - "id": 1191, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2237:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2237:14:5" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1207, - "src": "2181:31:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1188, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "2181:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2180:33:5" - }, - "payable": false, - "returnParameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [], - "src": "2256:0:5" - }, - "scope": 1418, - "src": "2155:186:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1223, - "nodeType": "Block", - "src": "2672:59:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1216, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "2682:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1218, - "indexExpression": { - "argumentTypes": null, - "id": 1217, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "2694:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2682:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1219, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "2682:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1220, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1211, - "src": "2714:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2682:42:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1222, - "nodeType": "ExpressionStatement", - "src": "2682:42:5" - } - ] - }, - "id": 1224, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1214, - "modifierName": { - "argumentTypes": null, - "id": 1213, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2653:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2653:14:5" - } - ], - "name": "changeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1209, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2595:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2595:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1211, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2610:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2610:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2594:35:5" - }, - "payable": false, - "returnParameters": { - "id": 1215, - "nodeType": "ParameterList", - "parameters": [], - "src": "2672:0:5" - }, - "scope": 1418, - "src": "2569:162:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1347, - "nodeType": "Block", - "src": "3407:1164:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1244, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1226, - "src": "3521:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1242, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "3502:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3502:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3502:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1241, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3494:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3494:35:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1247, - "nodeType": "ExpressionStatement", - "src": "3494:35:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1249, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "3547:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1250, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3560:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3560:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3560:25:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3547:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1248, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3539:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3539:47:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1255, - "nodeType": "ExpressionStatement", - "src": "3539:47:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1257, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3671:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3671:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3686:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3671:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1261, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3691:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3699:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3691:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1265, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3704:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3704:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3718:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3704:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1269, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3723:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3732:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3723:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3704:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1256, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3663:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:71:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1275, - "nodeType": "ExpressionStatement", - "src": "3663:71:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1277, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3744:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1276, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3744:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1278, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3744:13:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1280, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3767:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3767:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1281, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3767:16:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1283, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3793:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1282, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3793:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1284, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3793:14:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3821:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3821:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3821:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1316, - "nodeType": "Block", - "src": "3942:345:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1302, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3956:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1303, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3964:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3956:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1305, - "nodeType": "ExpressionStatement", - "src": "3956:10:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1307, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3980:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1306, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3980:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1308, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3980:25:5" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1307, - "isOffset": false, - "isSlot": false, - "src": "4046:18:5", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1283, - "isOffset": false, - "isSlot": false, - "src": "4158:6:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4078:4:5", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1280, - "isOffset": false, - "isSlot": false, - "src": "4107:8:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4129:4:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4178:4:5", - "valueSize": 1 - } - } - ], - "id": 1309, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "4019:205:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1311, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "4225:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1312, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "4247:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4225:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1310, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4217:59:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1315, - "nodeType": "ExpressionStatement", - "src": "4217:59:5" - } - ] - }, - "id": 1317, - "nodeType": "IfStatement", - "src": "3817:470:5", - "trueBody": { - "id": 1301, - "nodeType": "Block", - "src": "3839:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1289, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3853:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3861:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3853:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "3853:9:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1293, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "3876:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1294, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3887:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3876:13:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1296, - "nodeType": "ExpressionStatement", - "src": "3876:13:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1297, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "3903:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1298, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3912:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3903:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1300, - "nodeType": "ExpressionStatement", - "src": "3903:14:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1319, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "4304:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4316:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4304:13:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4296:22:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1323, - "nodeType": "ExpressionStatement", - "src": "4296:22:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1325, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4336:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1326, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4345:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4336:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1324, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4328:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4328:19:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1329, - "nodeType": "ExpressionStatement", - "src": "4328:19:5" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1331, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4438:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1332, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4445:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1330, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "4425:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4425:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1344, - "nodeType": "IfStatement", - "src": "4421:122:5", - "trueBody": { - "id": 1343, - "nodeType": "Block", - "src": "4454:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1334, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4468:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1336, - "indexExpression": { - "argumentTypes": null, - "id": 1335, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4480:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4468:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4468:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1338, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4501:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4468:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1340, - "nodeType": "ExpressionStatement", - "src": "4468:39:5" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4528:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1240, - "id": 1342, - "nodeType": "Return", - "src": "4521:11:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4559:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1240, - "id": 1346, - "nodeType": "Return", - "src": "4552:12:5" - } - ] - }, - "id": 1348, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "3365:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3365:14:5" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1226, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3255:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1225, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3255:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1228, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3271:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1227, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3271:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1230, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3283:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3283:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1232, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3298:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1231, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3298:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3310:30:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1233, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3310:20:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3254:87:5" - }, - "payable": false, - "returnParameters": { - "id": 1240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1239, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3397:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1238, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3397:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3396:6:5" - }, - "scope": 1418, - "src": "3233:1338:5", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1403, - "nodeType": "Block", - "src": "4674:391:5", - "statements": [ - { - "assignments": [ - 1358 - ], - "declarations": [ - { - "constant": false, - "id": 1358, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4684:29:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - }, - "typeName": { - "contractScope": null, - "id": 1357, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "4684:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1362, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1359, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4716:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1361, - "indexExpression": { - "argumentTypes": null, - "id": 1360, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1350, - "src": "4728:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4716:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4684:50:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1363, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4748:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4748:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1365, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4758:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1366, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4758:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4748:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1382, - "nodeType": "IfStatement", - "src": "4744:126:5", - "trueBody": { - "id": 1381, - "nodeType": "Block", - "src": "4778:92:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1368, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4792:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4792:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1371, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4813:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4813:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4792:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4792:28:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1375, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4834:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1377, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4834:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4858:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4834:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1380, - "nodeType": "ExpressionStatement", - "src": "4834:25:5" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1383, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4886:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1384, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4886:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4910:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1387, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4920:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1388, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "4920:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:55:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1390, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4957:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1391, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4957:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1392, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4981:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1394, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4990:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4990:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:54:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4886:125:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1400, - "nodeType": "IfStatement", - "src": "4879:157:5", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5032:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1356, - "id": 1399, - "nodeType": "Return", - "src": "5025:11:5" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5053:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1356, - "id": 1402, - "nodeType": "Return", - "src": "5046:12:5" - } - ] - }, - "id": 1404, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isUnderLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1350, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4599:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1349, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4599:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1352, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4614:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4614:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4598:31:5" - }, - "payable": false, - "returnParameters": { - "id": 1356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1355, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4664:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1354, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4664:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4663:6:5" - }, - "scope": 1418, - "src": "4577:488:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1416, - "nodeType": "Block", - "src": "5229:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1409, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5246:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1410, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5253:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5259:6:5", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "5253:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1413, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5252:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5246:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1408, - "id": 1415, - "nodeType": "Return", - "src": "5239:27:5" - } - ] - }, - "id": 1417, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "today", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1405, - "nodeType": "ParameterList", - "parameters": [], - "src": "5171:2:5" - }, - "payable": false, - "returnParameters": { - "id": 1408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1417, - "src": "5219:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1406, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5219:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5218:6:5" - }, - "scope": 1418, - "src": "5157:116:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1419, - "src": "247:5028:5" - } - ], - "src": "0:5276:5" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xa79d02e23d840830c4f6c623a2b60310769c3a4b", - "transactionHash": "0xb3a98f4a3e8373b6de6b63eaf25e88a3593003119f1df8a30a020f4c9a6cc322" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xd563051ec0a4aa4756dd1f0d21ef2e6ef0fae3e2", - "transactionHash": "0xdec49def750774a696ff6d1de86b27d3eac5967850d8f56e85f7c93bfaf17592" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f", - "transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xee471df0173d120eface5e5cf69a05cc4d1ce78a", - "transactionHash": "0xfd1473bdb9d32d9cef56f6fc22af6034ebd9f2aeb8d55ce0985f29b4086514a2" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.022Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Extension.json b/safe-contracts/build/contracts/v0/Extension.json deleted file mode 100644 index 7cdcf70df3..0000000000 --- a/safe-contracts/build/contracts/v0/Extension.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "contractName": "Extension", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "sourceMap": "", - "deployedSourceMap": "", - "source": "pragma solidity 0.4.19;\nimport \"./GnosisSafe.sol\";\n\n\n/// @title Abstract Extension - Functions to be implemented by extensions.\n/// @author Stefan George - \ncontract Extension {\n\n /// @dev Function to be implmeneted by extension. Returns if Safe transaction is valid and can be executed.\n /// @param sender Safe transaction sender address. This is not necessarily a Safe owner and needs to be \n /// verified in case only Safe owners are allowed.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation) public returns (bool);\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "exportedSymbols": { - "Extension": [ - 18 - ] - }, - "id": 19, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 19, - "sourceUnit": 964, - "src": "24:26:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", - "fullyImplemented": false, - "id": 18, - "linearizedBaseContracts": [ - 18 - ], - "name": "Extension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "id": 17, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "710:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "710:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "726:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "726:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 8, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "738:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "738:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "753:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 9, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "753:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "765:30:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 11, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "765:20:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:87:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "813:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "813:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:6:0" - }, - "scope": 18, - "src": "688:131:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 19, - "src": "175:646:0" - } - ], - "src": "0:822:0" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "exportedSymbols": { - "Extension": [ - 18 - ] - }, - "id": 19, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 19, - "sourceUnit": 964, - "src": "24:26:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", - "fullyImplemented": false, - "id": 18, - "linearizedBaseContracts": [ - 18 - ], - "name": "Extension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "id": 17, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "710:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "710:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "726:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "726:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 8, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "738:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "738:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "753:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 9, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "753:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "765:30:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 11, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "765:20:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:87:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "813:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "813:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:6:0" - }, - "scope": 18, - "src": "688:131:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 19, - "src": "175:646:0" - } - ], - "src": "0:822:0" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.365Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/GnosisSafe.json b/safe-contracts/build/contracts/v0/GnosisSafe.json deleted file mode 100644 index 7b01ffd6b1..0000000000 --- a/safe-contracts/build/contracts/v0/GnosisSafe.json +++ /dev/null @@ -1,25235 +0,0 @@ -{ - "contractName": "GnosisSafe", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - } - ], - "name": "isConfirmed", - "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": "nonce", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "extensions", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isExtension", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newContract", - "type": "address" - } - ], - "name": "ContractCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "oldOwnerIndex", - "type": "uint256" - }, - { - "name": "oldOwner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "extension", - "type": "address" - } - ], - "name": "addExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "extensionIndex", - "type": "uint256" - }, - { - "name": "extension", - "type": "address" - } - ], - "name": "removeExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - }, - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "indices", - "type": "uint256[]" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "extension", - "type": "address" - } - ], - "name": "executeExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getExtensions", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "confirmationCount", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmingOwners", - "outputs": [ - { - "name": "confirmingOwners", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "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": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "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": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "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": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "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" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" - }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 851, - "nodeType": "Block", - "src": "13238:87:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 839, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" - } - ] - }, - "id": 861, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 854, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13473:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 855, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13473:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 865, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 872, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 871, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "13970:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13969:24:1" - }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 961, - "nodeType": "Block", - "src": "14432:407:1", - "statements": [ - { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 913, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 912, - "name": "getConfirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "14514:51:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 933, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ - { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { - "argumentTypes": null, - "id": 936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" - }, - "nodeType": "ForStatement", - "src": "14606:227:1" - } - ] - }, - "id": 962, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmingOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 904, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 903, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 908, - "name": "confirmingOwners", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14399:28:1" - }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 964, - "src": "218:14623:1" - } - ], - "src": "0:14842:1" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "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": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "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": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "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": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "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" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" - }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 851, - "nodeType": "Block", - "src": "13238:87:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 839, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" - } - ] - }, - "id": 861, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 854, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13473:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 855, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13473:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 865, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 872, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 871, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "13970:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13969:24:1" - }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 961, - "nodeType": "Block", - "src": "14432:407:1", - "statements": [ - { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 913, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 912, - "name": "getConfirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "14514:51:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 933, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ - { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { - "argumentTypes": null, - "id": 936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" - }, - "nodeType": "ForStatement", - "src": "14606:227:1" - } - ] - }, - "id": 962, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmingOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 904, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 903, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 908, - "name": "confirmingOwners", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14399:28:1" - }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 964, - "src": "218:14623:1" - } - ], - "src": "0:14842:1" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1", - "transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28", - "transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", - "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d", - "transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.047Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Migrations.json b/safe-contracts/build/contracts/v0/Migrations.json deleted file mode 100644 index e6b99e6ecf..0000000000 --- a/safe-contracts/build/contracts/v0/Migrations.json +++ /dev/null @@ -1,1397 +0,0 @@ -{ - "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": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "sourceMap": "25:580:2:-;;;191:76;;;;;;;;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", - "deployedSourceMap": "25:580:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 1020 - ] - }, - "id": 1021, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 965, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1020, - "linearizedBaseContracts": [ - 1020 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 967, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 966, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "51:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 969, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 968, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "77:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 977, - "nodeType": "Block", - "src": "142:43:2", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 971, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "156:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 973, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "156:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 976, - "nodeType": "IfStatement", - "src": "152:26:2", - "trueBody": { - "id": 975, - "nodeType": "PlaceholderStatement", - "src": "177:1:2" - } - } - ] - }, - "id": 978, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 970, - "nodeType": "ParameterList", - "parameters": [], - "src": "139:2:2" - }, - "src": "120:65:2", - "visibility": "internal" - }, - { - "body": { - "id": 986, - "nodeType": "Block", - "src": "232:35:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 981, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 982, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "250:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "242:18:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 985, - "nodeType": "ExpressionStatement", - "src": "242:18:2" - } - ] - }, - "id": 987, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Migrations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 979, - "nodeType": "ParameterList", - "parameters": [], - "src": "210:2:2" - }, - "payable": false, - "returnParameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [], - "src": "232:0:2" - }, - "scope": 1020, - "src": "191:76:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 998, - "nodeType": "Block", - "src": "349:53:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 994, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 995, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "359:36:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "359:36:2" - } - ] - }, - "id": 999, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 992, - "modifierName": { - "argumentTypes": null, - "id": 991, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "334:10:2" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 990, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 989, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 988, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "295:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "294:16:2" - }, - "payable": false, - "returnParameters": { - "id": 993, - "nodeType": "ParameterList", - "parameters": [], - "src": "349:0:2" - }, - "scope": 1020, - "src": "273:129:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1018, - "nodeType": "Block", - "src": "484:119:2", - "statements": [ - { - "assignments": [ - 1007 - ], - "declarations": [ - { - "constant": false, - "id": 1007, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 1006, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1011, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1009, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1008, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "516:23:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1012, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "id": 1014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 1016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "549:47:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1017, - "nodeType": "ExpressionStatement", - "src": "549:47:2" - } - ] - }, - "id": 1019, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1004, - "modifierName": { - "argumentTypes": null, - "id": 1003, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "469:10:2" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1001, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "425:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "424:21:2" - }, - "payable": false, - "returnParameters": { - "id": 1005, - "nodeType": "ParameterList", - "parameters": [], - "src": "484:0:2" - }, - "scope": 1020, - "src": "408:195:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1021, - "src": "25:580:2" - } - ], - "src": "0:606:2" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 1020 - ] - }, - "id": 1021, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 965, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1020, - "linearizedBaseContracts": [ - 1020 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 967, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 966, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "51:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 969, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 968, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "77:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 977, - "nodeType": "Block", - "src": "142:43:2", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 971, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "156:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 973, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "156:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 976, - "nodeType": "IfStatement", - "src": "152:26:2", - "trueBody": { - "id": 975, - "nodeType": "PlaceholderStatement", - "src": "177:1:2" - } - } - ] - }, - "id": 978, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 970, - "nodeType": "ParameterList", - "parameters": [], - "src": "139:2:2" - }, - "src": "120:65:2", - "visibility": "internal" - }, - { - "body": { - "id": 986, - "nodeType": "Block", - "src": "232:35:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 981, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 982, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "250:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "242:18:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 985, - "nodeType": "ExpressionStatement", - "src": "242:18:2" - } - ] - }, - "id": 987, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Migrations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 979, - "nodeType": "ParameterList", - "parameters": [], - "src": "210:2:2" - }, - "payable": false, - "returnParameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [], - "src": "232:0:2" - }, - "scope": 1020, - "src": "191:76:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 998, - "nodeType": "Block", - "src": "349:53:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 994, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 995, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "359:36:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "359:36:2" - } - ] - }, - "id": 999, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 992, - "modifierName": { - "argumentTypes": null, - "id": 991, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "334:10:2" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 990, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 989, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 988, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "295:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "294:16:2" - }, - "payable": false, - "returnParameters": { - "id": 993, - "nodeType": "ParameterList", - "parameters": [], - "src": "349:0:2" - }, - "scope": 1020, - "src": "273:129:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1018, - "nodeType": "Block", - "src": "484:119:2", - "statements": [ - { - "assignments": [ - 1007 - ], - "declarations": [ - { - "constant": false, - "id": 1007, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 1006, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1011, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1009, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1008, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "516:23:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1012, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "id": 1014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 1016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "549:47:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1017, - "nodeType": "ExpressionStatement", - "src": "549:47:2" - } - ] - }, - "id": 1019, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1004, - "modifierName": { - "argumentTypes": null, - "id": 1003, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "469:10:2" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1001, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "425:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "424:21:2" - }, - "payable": false, - "returnParameters": { - "id": 1005, - "nodeType": "ParameterList", - "parameters": [], - "src": "484:0:2" - }, - "scope": 1020, - "src": "408:195:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1021, - "src": "25:580:2" - } - ], - "src": "0:606:2" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x8130ece7b262aa6e6a63a6d05b115247ba35a9ec", - "transactionHash": "0xdac98c9134a0828ac6bcf5a69d4d4154e890f197bdad53924cfdeaef1d29d363" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xa31ae2d8f41b3b5a5a748c88a3dcec0640582182", - "transactionHash": "0x9f7a4b1f8709150b7efd2c2a4b31708410f3f3ad0f938d67bcef3c52d1033672" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", - "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x9cafa36304f4ce89fadc9894820e8a7684cabe02", - "transactionHash": "0xa757776d7b9eac962d1c4e89161441d296a8153da49efa8ee43d0202d894df5d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.026Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSend.json b/safe-contracts/build/contracts/v0/MultiSend.json deleted file mode 100644 index e7c98caa04..0000000000 --- a/safe-contracts/build/contracts/v0/MultiSend.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "contractName": "MultiSend", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "transactions", - "type": "bytes" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6101278061001e6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "deployedBytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "sourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;593:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:12;698:5;739:4;756:491;770:6;767:1;764:2;756:491;;;834:1;820:12;816:3;810:5;898:4;895:1;891:3;877:12;873:3;867:5;971:4;968:1;964:3;950:12;946:3;940:5;1032:4;1029:1;1025:3;1011:12;1007:3;1107:1;1104;1092:10;1086:4;1079:5;1075:2;1071:1;1067:3;1062:4;1131:1;1126:23;;;;1055:94;;1126:23;1145:1;1142;1135:6;1055:94;;1226:4;1219;1212;1200:10;1196:3;1192;1188;1182:4;1178:3;1175:1;1171:3;1166:67;;782:465;;;;756:491;;;670:587;;;:::o", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "exportedSymbols": { - "MultiSend": [ - 2016 - ] - }, - "id": 2017, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2008, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:9" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", - "fullyImplemented": true, - "id": 2016, - "linearizedBaseContracts": [ - 2016 - ], - "name": "MultiSend", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2014, - "nodeType": "Block", - "src": "651:612:9", - "statements": [ - { - "externalReferences": [ - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "704:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "820:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "877:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "950:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "1011:12:9", - "valueSize": 1 - } - } - ], - "id": 2013, - "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" - } - ] - }, - "id": 2015, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2010, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2009, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "612:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "611:20:9" - }, - "payable": false, - "returnParameters": { - "id": 2012, - "nodeType": "ParameterList", - "parameters": [], - "src": "651:0:9" - }, - "scope": 2016, - "src": "593:670:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2017, - "src": "253:1012:9" - } - ], - "src": "0:1266:9" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "exportedSymbols": { - "MultiSend": [ - 2016 - ] - }, - "id": 2017, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2008, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:9" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", - "fullyImplemented": true, - "id": 2016, - "linearizedBaseContracts": [ - 2016 - ], - "name": "MultiSend", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2014, - "nodeType": "Block", - "src": "651:612:9", - "statements": [ - { - "externalReferences": [ - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "704:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "820:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "877:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "950:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "1011:12:9", - "valueSize": 1 - } - } - ], - "id": 2013, - "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" - } - ] - }, - "id": 2015, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2010, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2009, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "612:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "611:20:9" - }, - "payable": false, - "returnParameters": { - "id": 2012, - "nodeType": "ParameterList", - "parameters": [], - "src": "651:0:9" - }, - "scope": 2016, - "src": "593:670:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2017, - "src": "253:1012:9" - } - ], - "src": "0:1266:9" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xb42ea77ed35188c3d9f478ede1883c7fc3889bf4", - "transactionHash": "0x49884b2c77b96bd8fab92acb25cb6c1d31322f8d8a5285168b629d02ff0942df" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xa64866921fa040d96080a66327b57d3659aa3cb2", - "transactionHash": "0x0976055636f5f47833e456b68bbd3bd73497c17c1b51072795ee7ca472c7a1ee" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", - "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x1e2dee6ce961ee356fd4382bf3e34e9b7f3876ce", - "transactionHash": "0x03595ae31f80fbcd00b5c0e5c51593841fe78041c8750420decf364f0f3d724c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.025Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSendStruct.json b/safe-contracts/build/contracts/v0/MultiSendStruct.json deleted file mode 100644 index 58264cc55e..0000000000 --- a/safe-contracts/build/contracts/v0/MultiSendStruct.json +++ /dev/null @@ -1,1678 +0,0 @@ -{ - "contractName": "MultiSendStruct", - "abi": [ - { - "constant": false, - "inputs": [ - { - "components": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "transactions", - "type": "tuple[]" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6104338061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "sourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;;;;;;;;581:291;;;;;;;;;;;;;;;;;;;;;;;661:9;720:30;;:::i;:::-;673:1;661:13;;657:209;680:12;:19;676:1;:23;657:209;;;753:12;766:1;753:15;;;;;;;;;;;;;;;;;;720:48;;790:64;802:11;:14;;;818:11;:17;;;837:11;:16;;;790:11;:64::i;:::-;782:73;;;;;;;;701:3;;;;;;;657:209;;;581:291;;;:::o;878:231::-;972:12;1091:1;1088;1081:4;1075:5;1068:4;1062;1058:3;1051:5;1047:2;1043:1;1039:3;1034:4;1023:70;;1009:94;;;;;:::o;339:772::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:12;72:46;;;63:55;;57:66;;;;;175:756;;314:3;307:4;299:6;295:3;291;324:1;319:23;;;;284:58;;319:23;338:1;335;328:6;284:58;;375:6;362:12;397:105;412:89;494:6;412:89;;;397:105;;;388:114;;519:5;544:6;537:5;530:6;574:4;566:6;562:3;552:27;;596:4;591:3;587;580:21;;649:6;682:1;667:258;692:6;689:1;686:2;667:258;;;775:3;762:12;754:6;750:3;799:62;857:3;845:10;799:62;;;794:3;787:6;885:4;880:3;876;869:21;;913:4;908:3;904;897:21;;724:201;714:1;711;707:3;702:14;;667:258;;;671:14;277:654;;;;;;;;940:446;;1034:3;1027:4;1019:6;1015:3;1011;1044:1;1039:23;;;;1004:58;;1039:23;1058:1;1055;1048:6;1004:58;;1095:6;1082:12;1117:60;1132:44;1169:6;1132:44;;;1117:60;;;1108:69;;1197:6;1190:5;1183:6;1233:4;1225:6;1221:3;1266:4;1259:5;1255:3;1305;1296:6;1291:3;1287;1284:2;1315:1;1310:23;;;;1277:56;;1310:23;1329:1;1326;1319:6;1277:56;;1339:41;1373:6;1368:3;1363;1339:41;;;997:389;;;;;;;;1435:722;;1553:4;1541:9;1536:3;1532;1528;1564:1;1559:23;;;;1521:61;;1559:23;1578:1;1575;1568:6;1521:61;;1596:20;1611:4;1596:20;;;1587:29;;1664:1;1695:49;1740:3;1731:6;1720:9;1716:3;1695:49;;;1689:3;1682:5;1678:3;1671:6;1626:130;1807:2;1840:49;1885:3;1876:6;1865:9;1861:3;1840:49;;;1833:4;1826:5;1822:3;1815:6;1766:135;1979:2;1968:9;1964:3;1951:12;2007:18;1999:6;1996:2;2032:1;2027:23;;;;1989:61;;2027:23;2046:1;2043;2036:6;1989:61;;2081:54;2131:3;2122:6;2111:9;2107:3;2081:54;;;2074:4;2067:5;2063:3;2056:6;1911:236;1515:642;;;;;2164:118;;2231:46;2269:6;2256:12;2231:46;;;2222:55;;2216:66;;;;;2289:449;;2447:2;2435:9;2426:7;2422:3;2418;2456:1;2451:23;;;;2411:63;;2451:23;2470:1;2467;2460:6;2411:63;;2533:1;2522:9;2518:3;2505:12;2560:18;2552:6;2549:2;2585:1;2580:23;;;;2542:61;;2580:23;2599:1;2596;2589:6;2542:61;;2619:103;2714:7;2705:6;2694:9;2690:3;2619:103;;;2609:113;;2484:244;2405:333;;;;;2745:267;;2807:2;2801:5;2791:19;;2845:4;2837:6;2833:3;2948:6;2936:10;2933:2;2912:18;2900:10;2897:2;2894;2962:1;2957:23;;;;2887:93;;2957:23;2976:1;2973;2966:6;2887:93;;2996:10;2992:2;2985:6;2785:227;;;;;3019:294;;3207:18;3199:6;3196:2;3232:1;3227:23;;;;3189:61;;3227:23;3246:1;3243;3236:6;3189:61;;3275:4;3267:6;3263:3;3255:25;;3303:4;3297;3293:3;3285:23;;3126:187;;;;3320:265;;3463:18;3455:6;3452:2;3488:1;3483:23;;;;3445:61;;3483:23;3502:1;3499;3492:6;3445:61;;3546:4;3542:3;3535:4;3527:6;3523:3;3519;3511:41;;3575:4;3569;3565:3;3557:23;;3382:203;;;;3592:128;;3672:42;3665:5;3661:3;3650:65;;3644:76;;;;3727:79;;3796:5;3785:16;;3779:27;;;;3814:145;3895:6;3890:3;3885;3872:12;3951:1;3942:6;3937:3;3933;3926:6;3865:94;;;", - "source": "pragma solidity ^0.4.19;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 2077 - ] - }, - "id": 2078, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2018, - "literals": [ - "solidity", - "^", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "id": 2019, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 2077, - "linearizedBaseContracts": [ - 2077 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, - "members": [ - { - "constant": false, - "id": 2021, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2020, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "398:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2023, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2022, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "416:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2025, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - }, - "typeName": { - "id": 2024, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "437:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", - "visibility": "public" - }, - { - "body": { - "id": 2062, - "nodeType": "Block", - "src": "647:225:10", - "statements": [ - { - "body": { - "id": 2060, - "nodeType": "Block", - "src": "706:160:10", - "statements": [ - { - "assignments": [ - 2044 - ], - "declarations": [ - { - "constant": false, - "id": 2044, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - }, - "typeName": { - "contractScope": null, - "id": 2043, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2048, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2045, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2047, - "indexExpression": { - "argumentTypes": null, - "id": 2046, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "753:15:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2051, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2052, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2053, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2054, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2055, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 2050, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 2057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "790:64:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2049, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "782:73:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2059, - "nodeType": "ExpressionStatement", - "src": "782:73:10" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2036, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2037, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "680:19:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "676:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2061, - "initializationExpression": { - "assignments": [ - 2033 - ], - "declarations": [ - { - "constant": false, - "id": 2033, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "661:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2035, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "673:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "701:3:10", - "subExpression": { - "argumentTypes": null, - "id": 2040, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2042, - "nodeType": "ExpressionStatement", - "src": "701:3:10" - }, - "nodeType": "ForStatement", - "src": "657:209:10" - } - ] - }, - "id": 2063, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2030, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2029, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 2027, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "id": 2028, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:13:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "599:28:10" - }, - "payable": false, - "returnParameters": { - "id": 2031, - "nodeType": "ParameterList", - "parameters": [], - "src": "647:0:10" - }, - "scope": 2077, - "src": "581:291:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2075, - "nodeType": "Block", - "src": "990:119:10", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1062:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1081:4:10", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 2072, - "isOffset": false, - "isSlot": false, - "src": "1023:7:10", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 2065, - "isOffset": false, - "isSlot": false, - "src": "1047:2:10", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 2067, - "isOffset": false, - "isSlot": false, - "src": "1051:5:10", - "valueSize": 1 - } - } - ], - "id": 2074, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" - } - ] - }, - "id": 2076, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2065, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2064, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "899:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2067, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "911:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2069, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2068, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "926:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "898:39:10" - }, - "payable": false, - "returnParameters": { - "id": 2073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2072, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2071, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "972:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "971:14:10" - }, - "scope": 2077, - "src": "878:231:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2078, - "src": "339:772:10" - } - ], - "src": "0:1112:10" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 2077 - ] - }, - "id": 2078, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2018, - "literals": [ - "solidity", - "^", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "id": 2019, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 2077, - "linearizedBaseContracts": [ - 2077 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, - "members": [ - { - "constant": false, - "id": 2021, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2020, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "398:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2023, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2022, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "416:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2025, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - }, - "typeName": { - "id": 2024, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "437:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", - "visibility": "public" - }, - { - "body": { - "id": 2062, - "nodeType": "Block", - "src": "647:225:10", - "statements": [ - { - "body": { - "id": 2060, - "nodeType": "Block", - "src": "706:160:10", - "statements": [ - { - "assignments": [ - 2044 - ], - "declarations": [ - { - "constant": false, - "id": 2044, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - }, - "typeName": { - "contractScope": null, - "id": 2043, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2048, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2045, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2047, - "indexExpression": { - "argumentTypes": null, - "id": 2046, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "753:15:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2051, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2052, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2053, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2054, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2055, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 2050, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 2057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "790:64:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2049, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "782:73:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2059, - "nodeType": "ExpressionStatement", - "src": "782:73:10" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2036, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2037, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "680:19:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "676:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2061, - "initializationExpression": { - "assignments": [ - 2033 - ], - "declarations": [ - { - "constant": false, - "id": 2033, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "661:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2035, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "673:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "701:3:10", - "subExpression": { - "argumentTypes": null, - "id": 2040, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2042, - "nodeType": "ExpressionStatement", - "src": "701:3:10" - }, - "nodeType": "ForStatement", - "src": "657:209:10" - } - ] - }, - "id": 2063, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2030, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2029, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 2027, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "id": 2028, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:13:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "599:28:10" - }, - "payable": false, - "returnParameters": { - "id": 2031, - "nodeType": "ParameterList", - "parameters": [], - "src": "647:0:10" - }, - "scope": 2077, - "src": "581:291:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2075, - "nodeType": "Block", - "src": "990:119:10", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1062:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1081:4:10", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 2072, - "isOffset": false, - "isSlot": false, - "src": "1023:7:10", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 2065, - "isOffset": false, - "isSlot": false, - "src": "1047:2:10", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 2067, - "isOffset": false, - "isSlot": false, - "src": "1051:5:10", - "valueSize": 1 - } - } - ], - "id": 2074, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" - } - ] - }, - "id": 2076, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2065, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2064, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "899:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2067, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "911:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2069, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2068, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "926:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "898:39:10" - }, - "payable": false, - "returnParameters": { - "id": 2073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2072, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2071, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "972:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "971:14:10" - }, - "scope": 2077, - "src": "878:231:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2078, - "src": "339:772:10" - } - ], - "src": "0:1112:10" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.395Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Proxy.json b/safe-contracts/build/contracts/v0/Proxy.json deleted file mode 100644 index ddba9fa348..0000000000 --- a/safe-contracts/build/contracts/v0/Proxy.json +++ /dev/null @@ -1,644 +0,0 @@ -{ - "contractName": "Proxy", - "abi": [ - { - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "deployedBytecode": "0x606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "sourceMap": "190:887:3:-;;;357:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;430:11;:16;;;;422:25;;;;;;;;470:11;457:10;;:24;;;;;;;;;;;;;;;;;;357:131;190:887;;;;;;", - "deployedSourceMap": "190:887:3:-;;;703:42;699:1;693:5;689:3;778:12;775:1;772;759:12;876:1;873;857:12;854:1;842:10;838:1;834:3;821:12;912:14;909:1;906;891:14;949:7;974:1;969:38;;;;1040:14;1037:1;1030:6;969:38;988:14;985:1;978:6", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n function Proxy(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "exportedSymbols": { - "Proxy": [ - 1046 - ] - }, - "id": 1047, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1022, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1046, - "linearizedBaseContracts": [ - 1046 - ], - "name": "Proxy", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1024, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1023, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "212:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "body": { - "id": 1039, - "nodeType": "Block", - "src": "412:76:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1030, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "445:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "430:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1029, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "422:25:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1034, - "nodeType": "ExpressionStatement", - "src": "422:25:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1035, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1036, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "457:24:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1038, - "nodeType": "ExpressionStatement", - "src": "457:24:3" - } - ] - }, - "id": 1040, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Proxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1027, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1026, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1025, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:21:3" - }, - "payable": false, - "returnParameters": { - "id": 1028, - "nodeType": "ParameterList", - "parameters": [], - "src": "412:0:3" - }, - "scope": 1046, - "src": "357:131:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1044, - "nodeType": "Block", - "src": "638:437:3", - "statements": [ - { - "externalReferences": [], - "id": 1043, - "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" - } - ] - }, - "id": 1045, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1041, - "nodeType": "ParameterList", - "parameters": [], - "src": "598:2:3" - }, - "payable": true, - "returnParameters": { - "id": 1042, - "nodeType": "ParameterList", - "parameters": [], - "src": "638:0:3" - }, - "scope": 1046, - "src": "589:486:3", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - } - ], - "scope": 1047, - "src": "190:887:3" - } - ], - "src": "0:1078:3" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "exportedSymbols": { - "Proxy": [ - 1046 - ] - }, - "id": 1047, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1022, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1046, - "linearizedBaseContracts": [ - 1046 - ], - "name": "Proxy", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1024, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1023, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "212:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "body": { - "id": 1039, - "nodeType": "Block", - "src": "412:76:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1030, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "445:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "430:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1029, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "422:25:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1034, - "nodeType": "ExpressionStatement", - "src": "422:25:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1035, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1036, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "457:24:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1038, - "nodeType": "ExpressionStatement", - "src": "457:24:3" - } - ] - }, - "id": 1040, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Proxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1027, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1026, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1025, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:21:3" - }, - "payable": false, - "returnParameters": { - "id": 1028, - "nodeType": "ParameterList", - "parameters": [], - "src": "412:0:3" - }, - "scope": 1046, - "src": "357:131:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1044, - "nodeType": "Block", - "src": "638:437:3", - "statements": [ - { - "externalReferences": [], - "id": 1043, - "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" - } - ] - }, - "id": 1045, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1041, - "nodeType": "ParameterList", - "parameters": [], - "src": "598:2:3" - }, - "payable": true, - "returnParameters": { - "id": 1042, - "nodeType": "ParameterList", - "parameters": [], - "src": "638:0:3" - }, - "scope": 1046, - "src": "589:486:3", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - } - ], - "scope": 1047, - "src": "190:887:3" - } - ], - "src": "0:1078:3" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.368Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/ProxyFactory.json b/safe-contracts/build/contracts/v0/ProxyFactory.json deleted file mode 100644 index ad986eb501..0000000000 --- a/safe-contracts/build/contracts/v0/ProxyFactory.json +++ /dev/null @@ -1,1014 +0,0 @@ -{ - "contractName": "ProxyFactory", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "proxy", - "type": "address" - } - ], - "name": "ProxyCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "masterCopy", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createProxy", - "outputs": [ - { - "name": "proxy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b61033e8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "sourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;;;;;;;;532:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:29;;701:1;687:4;:11;:15;683:201;;;806:1;803;796:4;790:5;783:4;777;773:3;770:1;763:5;759:1;755:3;750:4;830:1;825:23;;;;743:105;;825:23;844:1;841;834:6;743:105;;725:137;871:20;885:5;871:20;;;;;;;;;;;;;;;;;;;;;;532:366;;;;:::o;225:675::-;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n assembly {\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 { revert(0, 0) }\n }\n ProxyCreation(proxy);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "exportedSymbols": { - "ProxyFactory": [ - 1081 - ] - }, - "id": 1082, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1048, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "file": "./Proxy.sol", - "id": 1049, - "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [ - 1046 - ], - "contractKind": "contract", - "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1081, - "linearizedBaseContracts": [ - 1081 - ], - "name": "ProxyFactory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 1053, - "name": "ProxyCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "indexed": false, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1050, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "273:13:4" - }, - "src": "254:33:4" - }, - { - "body": { - "id": 1079, - "nodeType": "Block", - "src": "634:264:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1062, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1065, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "652:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", - "typeString": "function (address) returns (contract Proxy)" - }, - "typeName": { - "contractScope": null, - "id": 1063, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - }, - "id": 1066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "652:21:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "src": "644:29:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "id": 1068, - "nodeType": "ExpressionStatement", - "src": "644:29:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1069, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "687:11:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1071, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "701:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "687:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1074, - "nodeType": "IfStatement", - "src": "683:201:4", - "trueBody": { - "externalReferences": [ - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "777:4:4", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "796:4:4", - "valueSize": 1 - } - }, - { - "proxy": { - "declaration": 1060, - "isOffset": false, - "isSlot": false, - "src": "763:5:4", - "valueSize": 1 - } - } - ], - "id": 1073, - "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1076, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - ], - "id": 1075, - "name": "ProxyCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", - "typeString": "function (contract Proxy)" - } - }, - "id": 1077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "871:20:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" - } - ] - }, - "id": 1080, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createProxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1055, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1054, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "553:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1057, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1056, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "573:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "552:32:4" - }, - "payable": false, - "returnParameters": { - "id": 1061, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1060, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1059, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "616:13:4" - }, - "scope": 1081, - "src": "532:366:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1082, - "src": "225:675:4" - } - ], - "src": "0:901:4" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "exportedSymbols": { - "ProxyFactory": [ - 1081 - ] - }, - "id": 1082, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1048, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "file": "./Proxy.sol", - "id": 1049, - "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [ - 1046 - ], - "contractKind": "contract", - "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1081, - "linearizedBaseContracts": [ - 1081 - ], - "name": "ProxyFactory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 1053, - "name": "ProxyCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "indexed": false, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1050, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "273:13:4" - }, - "src": "254:33:4" - }, - { - "body": { - "id": 1079, - "nodeType": "Block", - "src": "634:264:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1062, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1065, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "652:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", - "typeString": "function (address) returns (contract Proxy)" - }, - "typeName": { - "contractScope": null, - "id": 1063, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - }, - "id": 1066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "652:21:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "src": "644:29:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "id": 1068, - "nodeType": "ExpressionStatement", - "src": "644:29:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1069, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "687:11:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1071, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "701:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "687:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1074, - "nodeType": "IfStatement", - "src": "683:201:4", - "trueBody": { - "externalReferences": [ - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "777:4:4", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "796:4:4", - "valueSize": 1 - } - }, - { - "proxy": { - "declaration": 1060, - "isOffset": false, - "isSlot": false, - "src": "763:5:4", - "valueSize": 1 - } - } - ], - "id": 1073, - "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1076, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - ], - "id": 1075, - "name": "ProxyCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", - "typeString": "function (contract Proxy)" - } - }, - "id": 1077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "871:20:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" - } - ] - }, - "id": 1080, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createProxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1055, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1054, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "553:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1057, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1056, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "573:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "552:32:4" - }, - "payable": false, - "returnParameters": { - "id": 1061, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1060, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1059, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "616:13:4" - }, - "scope": 1081, - "src": "532:366:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1082, - "src": "225:675:4" - } - ], - "src": "0:901:4" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x28442b8a4c6ffbe02fa75a1d1524b7c38ef79194", - "transactionHash": "0xc0e9f6268bb1b4e75e1683d0d93175523c18a23ef01bf660f6332d54ca03ad92" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x53294c9c8def7e613c5bc68ac232125c0a60bef7", - "transactionHash": "0x641afc57ac89b6f66587df51dda6b602bf35fc0feef170b48e8a047729eb8784" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", - "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x6fc8a87bf7e3499f14c21396b773cc92adb7d1e6", - "transactionHash": "0x70d96a3ae7424f041f6d56773e5500d9eecc075b3ec5b9fb63ee06b91354965c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.019Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json b/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json deleted file mode 100644 index 0d19870f1f..0000000000 --- a/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json +++ /dev/null @@ -1,9121 +0,0 @@ -{ - "contractName": "SocialRecoveryExtension", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isFriend", - "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": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - }, - { - "name": "", - "type": "address" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "friends", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "isExecuted", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_friends", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "_friends", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "isConfirmedByRequiredFriends", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "data", - "type": "bytes" - } - ], - "name": "getDataHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b6040516200140738038062001407833981016040528080518201919060200180519060200190919050506200005a82826200006264010000000002620006a2176401000000009004565b505062000360565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515620000ab57600080fd5b82518260ff1611151515620000bf57600080fd5b60028260ff1610151515620000d357600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200025257600083828151811015156200013457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200016257600080fd5b6003600084838151811015156200017557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515620001d457600080fd5b6001600360008584815181101515620001e957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000119565b82600290805190602001906200026a9291906200028b565b5081600160146101000a81548160ff021916908360ff160217905550505050565b82805482825590600052602060002090810192821562000307579160200282015b82811115620003065782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002ac565b5b5090506200031691906200031a565b5090565b6200035d91905b808211156200035957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000321565b5090565b90565b61109780620003706000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", - "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", - "sourceMap": "257:4890:6:-;;;1386:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:27;1492:8;1502:10;1486:5;;;;;:27;;;:::i;:::-;1386:134;;257:4890;;1717:669;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "257:4890:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;4481:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:916;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72:6;;;:::o;1717:669::-;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;572:22::-;;;;;;;;;;;;;:::o;695:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2835:181::-;1153:8;:20;1162:10;1153:20;;;;;;;;;;;;;;;;;;;;;;;;;1145:29;;;;;;;;2938:10;:20;2949:8;2938:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:21;2929:30;;;;;;;;3005:4;2969:11;:21;2981:8;2969:21;;;;;;;;;;;;;;;;;:33;2991:10;2969:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;2835:181;:::o;2532:190::-;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;2679:1;2663:11;2655:25;;;;2647:34;;;;;;;;2704:11;2691:10;;:24;;;;;;;;;;;;;;;;;;2532:190;:::o;4481:405::-;4582:4;4602:25;4642:9;4654:1;4642:13;;4637:221;4661:7;:14;;;;4657:1;:18;4637:221;;;4700:11;:21;4712:8;4700:21;;;;;;;;;;;;;;;;;:33;4722:7;4730:1;4722:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:33;;;;;;;;;;;;;;;;;;;;;;;;;4696:74;;;4751:19;;;;;;;4696:74;4809:9;;;;;;;;;;;4788:30;;:17;:30;4784:63;;;4843:4;4836:11;;;;4784:63;4677:3;;;;;;;4637:221;;;4874:5;4867:12;;4481:405;;;;;;:::o;310:57::-;;;;;;;;;;;;;;;;;;;;:::o;538:28::-;;;;;;;;;;;;;:::o;5015:130::-;5093:7;5133:4;5123:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5116:22:6;;5015:130;;;:::o;939:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:916::-;3568:4;3890:25;4085:16;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;3660:8;:16;3669:6;3660:16;;;;;;;;;;;;;;;;;;;;;;;;;3652:25;;;;;;;;3709:10;;;;;;;;;;;3695:25;;:2;:25;;;3687:34;;;;;;;;3748:1;3739:5;:10;3731:19;;;;;;;;3781:25;3768:38;;;;;;;;:9;:38;;;;;;;;;3760:47;;;;;;;;3986:4;3980;3976:3;3970:5;3948:44;;4041:33;4019:55;;;:18;:55;;;;4011:64;;;;;;;;4104:17;4116:4;4104:11;:17::i;:::-;4085:36;;4139:10;:20;4150:8;4139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:21;:75;;;;;4175:38;4204:8;4175:28;:38::i;:::-;4138:75;4131:161;;;4252:4;4229:10;:20;4240:8;4229:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4277:4;4270:11;;;;4131:161;4308:5;4301:12;;1099:1;3404:916;;;;;;;;;:::o;600:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;804:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;373:40::-;;;;;;;;;;;;;;;;;;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryExtension is Extension {\n\n string public constant NAME = \"Social Recovery Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n SocialRecoveryExtension masterCopy;\n GnosisSafe public gnosisSafe;\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function SocialRecoveryExtension(address[] _friends, uint8 _threshold)\n public\n {\n setup(_friends, _threshold);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n gnosisSafe = GnosisSafe(msg.sender);\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n require(_friends[i] != 0);\n require(!isFriend[_friends[i]]);\n isFriend[_friends[i]] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(SocialRecoveryExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param sender Friend's address.\n /// @param to Gnosis Safe address.\n /// @param value No Ether should be send.\n /// @param data Encoded owner replacement transaction.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[sender]);\n require(to == address(gnosisSafe));\n require(value == 0);\n require(operation == GnosisSafe.Operation.Call);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n if ( !isExecuted[dataHash]\n && isConfirmedByRequiredFriends(dataHash)) {\n isExecuted[dataHash] = true;\n return true;\n }\n return false;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "exportedSymbols": { - "SocialRecoveryExtension": [ - 1759 - ] - }, - "id": 1760, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1420, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:6" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1421, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 19, - "src": "24:26:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1422, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 964, - "src": "51:27:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "293:9:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1424, - "nodeType": "InheritanceSpecifier", - "src": "293:9:6" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1759, - "linearizedBaseContracts": [ - 1759, - 18 - ], - "name": "SocialRecoveryExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1427, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "310:57:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1425, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "310:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "340:27:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", - "typeString": "literal_string \"Social Recovery Extension\"" - }, - "value": "Social Recovery Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1430, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "373:40:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1428, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "373:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "406:7:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1433, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "419:72:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1431, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "419:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "478:13:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1435, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "498:34:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1434, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "498:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1437, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "538:28:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1436, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "538:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1439, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "572:22:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1438, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "572:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1442, - "name": "friends", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "600:24:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 1440, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "600:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1441, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1446, - "name": "isFriend", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "695:41:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1445, - "keyType": { - "id": 1443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "704:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1444, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "715:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1450, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "804:43:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1449, - "keyType": { - "id": 1447, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "813:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "804:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1448, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "824:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1456, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "939:65:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "typeName": { - "id": 1455, - "keyType": { - "id": 1451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "948:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "939:46:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "valueType": { - "id": 1454, - "keyType": { - "id": 1452, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "968:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "959:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1453, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "979:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1468, - "nodeType": "Block", - "src": "1037:70:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1055:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1055:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1462, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1077:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1069:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1069:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1055:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1458, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1047:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1047:42:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1466, - "nodeType": "ExpressionStatement", - "src": "1047:42:6" - }, - { - "id": 1467, - "nodeType": "PlaceholderStatement", - "src": "1099:1:6" - } - ] - }, - "id": 1469, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1457, - "nodeType": "ParameterList", - "parameters": [], - "src": "1034:2:6" - }, - "src": "1011:96:6", - "visibility": "internal" - }, - { - "body": { - "id": 1479, - "nodeType": "Block", - "src": "1135:57:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1472, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "1153:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1475, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1473, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1162:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1162:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1153:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1471, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1145:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1145:29:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1477, - "nodeType": "ExpressionStatement", - "src": "1145:29:6" - }, - { - "id": 1478, - "nodeType": "PlaceholderStatement", - "src": "1184:1:6" - } - ] - }, - "id": 1480, - "name": "onlyFriend", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:6" - }, - "src": "1113:79:6", - "visibility": "internal" - }, - { - "body": { - "id": 1493, - "nodeType": "Block", - "src": "1476:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1489, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1483, - "src": "1492:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1490, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1485, - "src": "1502:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1488, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1577, - "src": "1486:5:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" - } - }, - "id": 1491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1486:27:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1492, - "nodeType": "ExpressionStatement", - "src": "1486:27:6" - } - ] - }, - "id": 1494, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "SocialRecoveryExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1486, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1483, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1419:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1481, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1419:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1482, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1419:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1485, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1439:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1484, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1439:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1418:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1487, - "nodeType": "ParameterList", - "parameters": [], - "src": "1476:0:6" - }, - "scope": 1759, - "src": "1386:134:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1576, - "nodeType": "Block", - "src": "1789:597:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1504, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1951:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1503, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1943:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1943:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1966:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1943:24:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1502, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1935:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1935:33:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1509, - "nodeType": "ExpressionStatement", - "src": "1935:33:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1511, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "1986:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1512, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2000:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2000:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1986:29:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1510, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1978:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1978:38:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1516, - "nodeType": "ExpressionStatement", - "src": "1978:38:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2034:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2048:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2034:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1517, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2026:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2026:24:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1522, - "nodeType": "ExpressionStatement", - "src": "2026:24:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1523, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "2060:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1525, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2084:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2084:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1524, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2073:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2073:22:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "2060:35:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1529, - "nodeType": "ExpressionStatement", - "src": "2060:35:6" - }, - { - "body": { - "id": 1566, - "nodeType": "Block", - "src": "2183:137:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1542, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2205:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1544, - "indexExpression": { - "argumentTypes": null, - "id": 1543, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2214:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2205:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2220:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2205:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1541, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2197:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2197:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1548, - "nodeType": "ExpressionStatement", - "src": "2197:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2244:22:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1550, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2245:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1554, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1551, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2254:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1553, - "indexExpression": { - "argumentTypes": null, - "id": 1552, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2263:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2254:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2245:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1549, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2236:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2236:31:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1557, - "nodeType": "ExpressionStatement", - "src": "2236:31:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1558, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2281:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1562, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1559, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2290:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1561, - "indexExpression": { - "argumentTypes": null, - "id": 1560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2299:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2290:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2281:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2305:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2281:28:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1565, - "nodeType": "ExpressionStatement", - "src": "2281:28:6" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1534, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2157:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1535, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2161:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2161:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2157:19:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1567, - "initializationExpression": { - "assignments": [ - 1531 - ], - "declarations": [ - { - "constant": false, - "id": 1531, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2142:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2142:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1533, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1532, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2154:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2142:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2178:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1538, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2178:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1540, - "nodeType": "ExpressionStatement", - "src": "2178:3:6" - }, - "nodeType": "ForStatement", - "src": "2137:183:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1568, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "2329:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1569, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2339:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2329:18:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "2329:18:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1572, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "2357:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1573, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2369:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2357:22:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "2357:22:6" - } - ] - }, - "id": 1577, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1500, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1497, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1732:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1732:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1496, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1732:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1499, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1752:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1752:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1731:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1501, - "nodeType": "ParameterList", - "parameters": [], - "src": "1789:0:6" - }, - "scope": 1759, - "src": "1717:669:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1596, - "nodeType": "Block", - "src": "2637:85:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1586, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2663:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - ], - "id": 1585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2655:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2655:20:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2679:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2655:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1584, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2647:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2647:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1591, - "nodeType": "ExpressionStatement", - "src": "2647:34:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1592, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "2691:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1593, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2704:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "src": "2691:24:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "id": 1595, - "nodeType": "ExpressionStatement", - "src": "2691:24:6" - } - ] - }, - "id": 1597, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1582, - "modifierName": { - "argumentTypes": null, - "id": 1581, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "2618:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2618:14:6" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1579, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1597, - "src": "2558:35:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "2558:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2557:37:6" - }, - "payable": false, - "returnParameters": { - "id": 1583, - "nodeType": "ParameterList", - "parameters": [], - "src": "2637:0:6" - }, - "scope": 1759, - "src": "2532:190:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1620, - "nodeType": "Block", - "src": "2919:97:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2937:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1605, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "2938:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1607, - "indexExpression": { - "argumentTypes": null, - "id": 1606, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2949:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2938:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1604, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2929:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2929:30:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1610, - "nodeType": "ExpressionStatement", - "src": "2929:30:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1611, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "2969:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1615, - "indexExpression": { - "argumentTypes": null, - "id": 1612, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2981:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2969:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1616, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1613, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2991:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2991:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2969:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2969:40:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1619, - "nodeType": "ExpressionStatement", - "src": "2969:40:6" - } - ] - }, - "id": 1621, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1602, - "modifierName": { - "argumentTypes": null, - "id": 1601, - "name": "onlyFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1480, - "src": "2904:10:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2904:10:6" - } - ], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2863:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1598, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2863:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2862:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1603, - "nodeType": "ParameterList", - "parameters": [], - "src": "2919:0:6" - }, - "scope": 1759, - "src": "2835:181:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1702, - "nodeType": "Block", - "src": "3578:742:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1639, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "3660:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1641, - "indexExpression": { - "argumentTypes": null, - "id": 1640, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1623, - "src": "3669:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3660:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3652:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3652:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1643, - "nodeType": "ExpressionStatement", - "src": "3652:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1645, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "3695:2:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1647, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "3709:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3701:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3701:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1644, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3687:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3687:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1651, - "nodeType": "ExpressionStatement", - "src": "3687:34:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "3739:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3748:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3739:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1652, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3731:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3731:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "3731:19:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1659, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "3768:9:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1660, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3781:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3781:20:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1662, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3781:25:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3768:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1658, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3760:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3760:47:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1665, - "nodeType": "ExpressionStatement", - "src": "3760:47:6" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1667, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3890:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1666, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3890:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1668, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3890:25:6" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "3948:18:6", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1629, - "isOffset": false, - "isSlot": false, - "src": "3980:4:6", - "valueSize": 1 - } - } - ], - "id": 1669, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "3925:93:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1671, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "4019:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1672, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1433, - "src": "4041:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4019:55:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4011:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4011:64:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1675, - "nodeType": "ExpressionStatement", - "src": "4011:64:6" - }, - { - "assignments": [ - 1677 - ], - "declarations": [ - { - "constant": false, - "id": 1677, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "4085:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1676, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4085:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1681, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1679, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "4116:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1678, - "name": "getDataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "4104:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" - } - }, - "id": 1680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4104:17:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4085:36:6" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4138:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1682, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4139:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1684, - "indexExpression": { - "argumentTypes": null, - "id": 1683, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4150:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4139:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1687, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4204:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1686, - "name": "isConfirmedByRequiredFriends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1746, - "src": "4175:28:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4175:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4138:75:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1699, - "nodeType": "IfStatement", - "src": "4131:161:6", - "trueBody": { - "id": 1698, - "nodeType": "Block", - "src": "4215:77:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1690, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4229:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1692, - "indexExpression": { - "argumentTypes": null, - "id": 1691, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4240:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4229:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4252:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4229:27:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1695, - "nodeType": "ExpressionStatement", - "src": "4229:27:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4277:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1637, - "id": 1697, - "nodeType": "Return", - "src": "4270:11:6" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4308:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1637, - "id": 1701, - "nodeType": "Return", - "src": "4301:12:6" - } - ] - }, - "id": 1703, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1634, - "modifierName": { - "argumentTypes": null, - "id": 1633, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3536:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3536:14:6" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1632, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1623, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3426:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1622, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3426:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1625, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3442:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1624, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3442:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1627, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3454:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1626, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3454:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1629, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3469:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1628, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3469:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1631, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3481:30:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1630, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3481:20:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3425:87:6" - }, - "payable": false, - "returnParameters": { - "id": 1637, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1636, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3568:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1635, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3568:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3567:6:6" - }, - "scope": 1759, - "src": "3404:916:6", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "4592:294:6", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1711, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4602:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4602:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1712, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "4602:25:6" - }, - { - "body": { - "id": 1741, - "nodeType": "Block", - "src": "4682:176:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1724, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "4700:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1726, - "indexExpression": { - "argumentTypes": null, - "id": 1725, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "4712:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1730, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1727, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4722:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1729, - "indexExpression": { - "argumentTypes": null, - "id": 1728, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4730:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4722:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1734, - "nodeType": "IfStatement", - "src": "4696:74:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4751:19:6", - "subExpression": { - "argumentTypes": null, - "id": 1731, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4751:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1733, - "nodeType": "ExpressionStatement", - "src": "4751:19:6" - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1735, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4788:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1736, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "4809:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4788:30:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1740, - "nodeType": "IfStatement", - "src": "4784:63:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4843:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1709, - "id": 1739, - "nodeType": "Return", - "src": "4836:11:6" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4657:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1718, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4661:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1719, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4661:14:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4657:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1742, - "initializationExpression": { - "assignments": [ - 1714 - ], - "declarations": [ - { - "constant": false, - "id": 1714, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4642:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1713, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4642:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1716, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4654:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4642:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4677:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1721, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4677:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1723, - "nodeType": "ExpressionStatement", - "src": "4677:3:6" - }, - "nodeType": "ForStatement", - "src": "4637:221:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4874:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1709, - "id": 1744, - "nodeType": "Return", - "src": "4867:12:6" - } - ] - }, - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isConfirmedByRequiredFriends", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1706, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1705, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4519:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1704, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4519:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4518:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1708, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4582:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1707, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4582:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4581:6:6" - }, - "scope": 1759, - "src": "4481:405:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1757, - "nodeType": "Block", - "src": "5106:39:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1754, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "5133:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1753, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "5123:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5123:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1752, - "id": 1756, - "nodeType": "Return", - "src": "5116:22:6" - } - ] - }, - "id": 1758, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getDataHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1749, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5036:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1747, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5036:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5035:12:6" - }, - "payable": false, - "returnParameters": { - "id": 1752, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1751, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5093:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1750, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5093:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5092:9:6" - }, - "scope": 1759, - "src": "5015:130:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1760, - "src": "257:4890:6" - } - ], - "src": "0:5148:6" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "exportedSymbols": { - "SocialRecoveryExtension": [ - 1759 - ] - }, - "id": 1760, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1420, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:6" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1421, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 19, - "src": "24:26:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1422, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 964, - "src": "51:27:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "293:9:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1424, - "nodeType": "InheritanceSpecifier", - "src": "293:9:6" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1759, - "linearizedBaseContracts": [ - 1759, - 18 - ], - "name": "SocialRecoveryExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1427, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "310:57:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1425, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "310:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "340:27:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", - "typeString": "literal_string \"Social Recovery Extension\"" - }, - "value": "Social Recovery Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1430, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "373:40:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1428, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "373:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "406:7:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1433, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "419:72:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1431, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "419:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "478:13:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1435, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "498:34:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1434, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "498:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1437, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "538:28:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1436, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "538:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1439, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "572:22:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1438, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "572:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1442, - "name": "friends", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "600:24:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 1440, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "600:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1441, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1446, - "name": "isFriend", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "695:41:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1445, - "keyType": { - "id": 1443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "704:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1444, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "715:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1450, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "804:43:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1449, - "keyType": { - "id": 1447, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "813:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "804:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1448, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "824:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1456, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "939:65:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "typeName": { - "id": 1455, - "keyType": { - "id": 1451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "948:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "939:46:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "valueType": { - "id": 1454, - "keyType": { - "id": 1452, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "968:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "959:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1453, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "979:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1468, - "nodeType": "Block", - "src": "1037:70:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1055:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1055:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1462, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1077:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1069:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1069:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1055:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1458, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1047:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1047:42:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1466, - "nodeType": "ExpressionStatement", - "src": "1047:42:6" - }, - { - "id": 1467, - "nodeType": "PlaceholderStatement", - "src": "1099:1:6" - } - ] - }, - "id": 1469, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1457, - "nodeType": "ParameterList", - "parameters": [], - "src": "1034:2:6" - }, - "src": "1011:96:6", - "visibility": "internal" - }, - { - "body": { - "id": 1479, - "nodeType": "Block", - "src": "1135:57:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1472, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "1153:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1475, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1473, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1162:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1162:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1153:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1471, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1145:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1145:29:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1477, - "nodeType": "ExpressionStatement", - "src": "1145:29:6" - }, - { - "id": 1478, - "nodeType": "PlaceholderStatement", - "src": "1184:1:6" - } - ] - }, - "id": 1480, - "name": "onlyFriend", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:6" - }, - "src": "1113:79:6", - "visibility": "internal" - }, - { - "body": { - "id": 1493, - "nodeType": "Block", - "src": "1476:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1489, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1483, - "src": "1492:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1490, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1485, - "src": "1502:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1488, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1577, - "src": "1486:5:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" - } - }, - "id": 1491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1486:27:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1492, - "nodeType": "ExpressionStatement", - "src": "1486:27:6" - } - ] - }, - "id": 1494, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "SocialRecoveryExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1486, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1483, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1419:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1481, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1419:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1482, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1419:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1485, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1439:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1484, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1439:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1418:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1487, - "nodeType": "ParameterList", - "parameters": [], - "src": "1476:0:6" - }, - "scope": 1759, - "src": "1386:134:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1576, - "nodeType": "Block", - "src": "1789:597:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1504, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1951:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1503, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1943:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1943:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1966:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1943:24:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1502, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1935:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1935:33:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1509, - "nodeType": "ExpressionStatement", - "src": "1935:33:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1511, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "1986:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1512, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2000:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2000:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1986:29:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1510, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1978:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1978:38:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1516, - "nodeType": "ExpressionStatement", - "src": "1978:38:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2034:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2048:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2034:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1517, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2026:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2026:24:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1522, - "nodeType": "ExpressionStatement", - "src": "2026:24:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1523, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "2060:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1525, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2084:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2084:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1524, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2073:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2073:22:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "2060:35:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1529, - "nodeType": "ExpressionStatement", - "src": "2060:35:6" - }, - { - "body": { - "id": 1566, - "nodeType": "Block", - "src": "2183:137:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1542, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2205:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1544, - "indexExpression": { - "argumentTypes": null, - "id": 1543, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2214:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2205:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2220:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2205:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1541, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2197:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2197:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1548, - "nodeType": "ExpressionStatement", - "src": "2197:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2244:22:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1550, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2245:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1554, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1551, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2254:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1553, - "indexExpression": { - "argumentTypes": null, - "id": 1552, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2263:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2254:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2245:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1549, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2236:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2236:31:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1557, - "nodeType": "ExpressionStatement", - "src": "2236:31:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1558, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2281:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1562, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1559, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2290:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1561, - "indexExpression": { - "argumentTypes": null, - "id": 1560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2299:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2290:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2281:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2305:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2281:28:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1565, - "nodeType": "ExpressionStatement", - "src": "2281:28:6" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1534, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2157:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1535, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2161:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2161:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2157:19:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1567, - "initializationExpression": { - "assignments": [ - 1531 - ], - "declarations": [ - { - "constant": false, - "id": 1531, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2142:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2142:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1533, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1532, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2154:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2142:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2178:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1538, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2178:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1540, - "nodeType": "ExpressionStatement", - "src": "2178:3:6" - }, - "nodeType": "ForStatement", - "src": "2137:183:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1568, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "2329:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1569, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2339:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2329:18:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "2329:18:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1572, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "2357:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1573, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2369:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2357:22:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "2357:22:6" - } - ] - }, - "id": 1577, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1500, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1497, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1732:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1732:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1496, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1732:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1499, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1752:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1752:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1731:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1501, - "nodeType": "ParameterList", - "parameters": [], - "src": "1789:0:6" - }, - "scope": 1759, - "src": "1717:669:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1596, - "nodeType": "Block", - "src": "2637:85:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1586, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2663:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - ], - "id": 1585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2655:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2655:20:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2679:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2655:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1584, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2647:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2647:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1591, - "nodeType": "ExpressionStatement", - "src": "2647:34:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1592, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "2691:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1593, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2704:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "src": "2691:24:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "id": 1595, - "nodeType": "ExpressionStatement", - "src": "2691:24:6" - } - ] - }, - "id": 1597, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1582, - "modifierName": { - "argumentTypes": null, - "id": 1581, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "2618:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2618:14:6" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1579, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1597, - "src": "2558:35:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "2558:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2557:37:6" - }, - "payable": false, - "returnParameters": { - "id": 1583, - "nodeType": "ParameterList", - "parameters": [], - "src": "2637:0:6" - }, - "scope": 1759, - "src": "2532:190:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1620, - "nodeType": "Block", - "src": "2919:97:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2937:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1605, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "2938:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1607, - "indexExpression": { - "argumentTypes": null, - "id": 1606, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2949:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2938:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1604, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2929:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2929:30:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1610, - "nodeType": "ExpressionStatement", - "src": "2929:30:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1611, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "2969:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1615, - "indexExpression": { - "argumentTypes": null, - "id": 1612, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2981:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2969:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1616, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1613, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2991:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2991:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2969:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2969:40:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1619, - "nodeType": "ExpressionStatement", - "src": "2969:40:6" - } - ] - }, - "id": 1621, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1602, - "modifierName": { - "argumentTypes": null, - "id": 1601, - "name": "onlyFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1480, - "src": "2904:10:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2904:10:6" - } - ], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2863:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1598, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2863:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2862:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1603, - "nodeType": "ParameterList", - "parameters": [], - "src": "2919:0:6" - }, - "scope": 1759, - "src": "2835:181:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1702, - "nodeType": "Block", - "src": "3578:742:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1639, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "3660:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1641, - "indexExpression": { - "argumentTypes": null, - "id": 1640, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1623, - "src": "3669:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3660:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3652:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3652:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1643, - "nodeType": "ExpressionStatement", - "src": "3652:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1645, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "3695:2:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1647, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "3709:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3701:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3701:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1644, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3687:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3687:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1651, - "nodeType": "ExpressionStatement", - "src": "3687:34:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "3739:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3748:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3739:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1652, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3731:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3731:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "3731:19:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1659, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "3768:9:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1660, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3781:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3781:20:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1662, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3781:25:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3768:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1658, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3760:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3760:47:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1665, - "nodeType": "ExpressionStatement", - "src": "3760:47:6" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1667, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3890:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1666, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3890:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1668, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3890:25:6" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "3948:18:6", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1629, - "isOffset": false, - "isSlot": false, - "src": "3980:4:6", - "valueSize": 1 - } - } - ], - "id": 1669, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "3925:93:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1671, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "4019:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1672, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1433, - "src": "4041:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4019:55:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4011:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4011:64:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1675, - "nodeType": "ExpressionStatement", - "src": "4011:64:6" - }, - { - "assignments": [ - 1677 - ], - "declarations": [ - { - "constant": false, - "id": 1677, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "4085:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1676, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4085:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1681, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1679, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "4116:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1678, - "name": "getDataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "4104:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" - } - }, - "id": 1680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4104:17:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4085:36:6" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4138:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1682, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4139:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1684, - "indexExpression": { - "argumentTypes": null, - "id": 1683, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4150:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4139:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1687, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4204:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1686, - "name": "isConfirmedByRequiredFriends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1746, - "src": "4175:28:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4175:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4138:75:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1699, - "nodeType": "IfStatement", - "src": "4131:161:6", - "trueBody": { - "id": 1698, - "nodeType": "Block", - "src": "4215:77:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1690, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4229:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1692, - "indexExpression": { - "argumentTypes": null, - "id": 1691, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4240:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4229:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4252:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4229:27:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1695, - "nodeType": "ExpressionStatement", - "src": "4229:27:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4277:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1637, - "id": 1697, - "nodeType": "Return", - "src": "4270:11:6" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4308:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1637, - "id": 1701, - "nodeType": "Return", - "src": "4301:12:6" - } - ] - }, - "id": 1703, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1634, - "modifierName": { - "argumentTypes": null, - "id": 1633, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3536:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3536:14:6" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1632, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1623, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3426:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1622, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3426:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1625, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3442:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1624, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3442:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1627, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3454:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1626, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3454:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1629, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3469:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1628, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3469:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1631, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3481:30:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1630, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3481:20:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3425:87:6" - }, - "payable": false, - "returnParameters": { - "id": 1637, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1636, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3568:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1635, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3568:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3567:6:6" - }, - "scope": 1759, - "src": "3404:916:6", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "4592:294:6", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1711, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4602:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4602:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1712, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "4602:25:6" - }, - { - "body": { - "id": 1741, - "nodeType": "Block", - "src": "4682:176:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1724, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "4700:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1726, - "indexExpression": { - "argumentTypes": null, - "id": 1725, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "4712:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1730, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1727, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4722:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1729, - "indexExpression": { - "argumentTypes": null, - "id": 1728, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4730:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4722:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1734, - "nodeType": "IfStatement", - "src": "4696:74:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4751:19:6", - "subExpression": { - "argumentTypes": null, - "id": 1731, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4751:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1733, - "nodeType": "ExpressionStatement", - "src": "4751:19:6" - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1735, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4788:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1736, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "4809:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4788:30:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1740, - "nodeType": "IfStatement", - "src": "4784:63:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4843:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1709, - "id": 1739, - "nodeType": "Return", - "src": "4836:11:6" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4657:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1718, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4661:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1719, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4661:14:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4657:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1742, - "initializationExpression": { - "assignments": [ - 1714 - ], - "declarations": [ - { - "constant": false, - "id": 1714, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4642:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1713, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4642:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1716, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4654:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4642:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4677:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1721, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4677:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1723, - "nodeType": "ExpressionStatement", - "src": "4677:3:6" - }, - "nodeType": "ForStatement", - "src": "4637:221:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4874:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1709, - "id": 1744, - "nodeType": "Return", - "src": "4867:12:6" - } - ] - }, - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isConfirmedByRequiredFriends", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1706, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1705, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4519:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1704, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4519:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4518:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1708, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4582:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1707, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4582:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4581:6:6" - }, - "scope": 1759, - "src": "4481:405:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1757, - "nodeType": "Block", - "src": "5106:39:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1754, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "5133:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1753, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "5123:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5123:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1752, - "id": 1756, - "nodeType": "Return", - "src": "5116:22:6" - } - ] - }, - "id": 1758, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getDataHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1749, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5036:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1747, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5036:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5035:12:6" - }, - "payable": false, - "returnParameters": { - "id": 1752, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1751, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5093:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1750, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5093:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5092:9:6" - }, - "scope": 1759, - "src": "5015:130:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1760, - "src": "257:4890:6" - } - ], - "src": "0:5148:6" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x0297aeb84568d3ab9d7b382240250dd0db22e05d", - "transactionHash": "0x85a0a0d054ba5a10091dabe072894eb0bc5f45b84927e8313094a600cabff0c6" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x1f3c28359e6018304b28fa46f5ef87f4b295939c", - "transactionHash": "0x9c32de35cd9321dbb7c9bb2aa35fd3a4199b08db6aae909ace4a5bf93392fd87" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b", - "transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xf24ba0f83a48b995c7cac0d028e7db00bad3e42c", - "transactionHash": "0xeae217ba71df737e9f757f2a8918a4fe5f0e1c862ebe2a74f655e8f7ae25be15" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.029Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/WhitelistExtension.json b/safe-contracts/build/contracts/v0/WhitelistExtension.json deleted file mode 100644 index f08d455228..0000000000 --- a/safe-contracts/build/contracts/v0/WhitelistExtension.json +++ /dev/null @@ -1,5406 +0,0 @@ -{ - "contractName": "WhitelistExtension", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isWhitelisted", - "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": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "accounts", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "accounts", - "type": "address[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "addToWhitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "removeFromWhitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b604051610c9a380380610c9a833981016040528080518201919050506100478161004d64010000000002610680176401000000009004565b506101a1565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561009557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b815181101561019d57600082828151811015156100f457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561012157600080fd5b600160026000848481518110151561013557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506100db565b5050565b610aea806101b06000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", - "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", - "sourceMap": "240:3067:7:-;;;796:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:15;879:8;873:5;;;;;:15;;;:::i;:::-;796:99;240:3067;;1017:477;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;240:3067::-;;;;;;;", - "deployedSourceMap": "240:3067:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;288:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;427:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:477;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;345:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46:7;;;;;;;;;;;;;;;;;;;;;;:::o;1640:185::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;1782:1;1766:11;1758:25;;;;1750:34;;;;;;;;1807:11;1794:10;;:24;;;;;;;;;;;;;;;;;;1640:185;:::o;2330:176::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2436:13;:22;2450:7;2436:22;;;;;;;;;;;;;;;;;;;;;;;;;2428:31;;;;;;;;2494:5;2469:13;:22;2483:7;2469:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2330:176;:::o;288:51::-;;;;;;;;;;;;;;;;;;;;:::o;427:28::-;;;;;;;;;;;;;:::o;1017:477::-;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;2878:427::-;3019:4;3136:10;;;;;;;;;;;:18;;;3155:6;3136:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:35;;;;;;;;3194:25;3181:38;;;;;;;;:9;:38;;;;;;;;;3173:47;;;;;;;;3234:13;:17;3248:2;3234:17;;;;;;;;;;;;;;;;;;;;;;;;;3230:46;;;3272:4;3265:11;;;;3230:46;3293:5;3286:12;;2878:427;;;;;;;;:::o;1974:202::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2086:1;2075:7;:12;;;;2067:21;;;;;;;;2107:13;:22;2121:7;2107:22;;;;;;;;;;;;;;;;;;;;;;;;;2106:23;2098:32;;;;;;;;2165:4;2140:13;:22;2154:7;2140:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1974:202;:::o;345:40::-;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistExtension is Extension {\n\n string public constant NAME = \"Whitelist Extension\";\n string public constant VERSION = \"0.0.1\";\n\n WhitelistExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param accounts List of whitelisted accounts.\n function WhitelistExtension(address[] accounts)\n public\n {\n setup(accounts);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n // Set whitelisted destinations.\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < accounts.length; i++) {\n require(accounts[i] != 0);\n isWhitelisted[accounts[i]]= true;\n }\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(WhitelistExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n if (isWhitelisted[to])\n return true;\n return false;\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "exportedSymbols": { - "WhitelistExtension": [ - 1961 - ] - }, - "id": 1962, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1761, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:7" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1762, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 19, - "src": "24:26:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1763, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 964, - "src": "51:27:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1764, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "271:9:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1765, - "nodeType": "InheritanceSpecifier", - "src": "271:9:7" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1961, - "linearizedBaseContracts": [ - 1961, - 18 - ], - "name": "WhitelistExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1768, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "288:51:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1766, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "288:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "57686974656c69737420457874656e73696f6e", - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "318:21:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", - "typeString": "literal_string \"Whitelist Extension\"" - }, - "value": "Whitelist Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1771, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "345:40:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1769, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "345:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "378:7:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1773, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "392:29:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1772, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "392:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1775, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "427:28:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1774, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "427:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1779, - "name": "isWhitelisted", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "528:46:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1778, - "keyType": { - "id": 1776, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "537:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "528:25:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1777, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "548:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1791, - "nodeType": "Block", - "src": "607:70:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1782, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "625:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "625:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1785, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "647:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "639:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "639:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "625:33:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1781, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "617:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "617:42:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1789, - "nodeType": "ExpressionStatement", - "src": "617:42:7" - }, - { - "id": 1790, - "nodeType": "PlaceholderStatement", - "src": "669:1:7" - } - ] - }, - "id": 1792, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1780, - "nodeType": "ParameterList", - "parameters": [], - "src": "604:2:7" - }, - "src": "581:96:7", - "visibility": "internal" - }, - { - "body": { - "id": 1802, - "nodeType": "Block", - "src": "863:32:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1799, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1795, - "src": "879:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - ], - "id": 1798, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1854, - "src": "873:5:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory)" - } - }, - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "873:15:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "873:15:7" - } - ] - }, - "id": 1803, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "WhitelistExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1795, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1803, - "src": "824:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1793, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "824:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1794, - "length": null, - "nodeType": "ArrayTypeName", - "src": "824:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "823:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1797, - "nodeType": "ParameterList", - "parameters": [], - "src": "863:0:7" - }, - "scope": 1961, - "src": "796:99:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1853, - "nodeType": "Block", - "src": "1071:423:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1811, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1233:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1225:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1225:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1813, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1248:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1225:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1809, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1217:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1217:33:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "1217:33:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1817, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1301:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1819, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1325:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1325:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1818, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1314:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1314:22:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1301:35:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1823, - "nodeType": "ExpressionStatement", - "src": "1301:35:7" - }, - { - "body": { - "id": 1851, - "nodeType": "Block", - "src": "1392:96:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1836, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1414:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1838, - "indexExpression": { - "argumentTypes": null, - "id": 1837, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1423:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1414:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1429:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1414:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1835, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1406:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:25:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1842, - "nodeType": "ExpressionStatement", - "src": "1406:25:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1843, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "1445:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1847, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1844, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1459:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1846, - "indexExpression": { - "argumentTypes": null, - "id": 1845, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1468:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1459:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1445:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1473:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1445:32:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1850, - "nodeType": "ExpressionStatement", - "src": "1445:32:7" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1828, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1366:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1829, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1370:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1370:15:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1366:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1852, - "initializationExpression": { - "assignments": [ - 1825 - ], - "declarations": [ - { - "constant": false, - "id": 1825, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1351:9:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1351:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1827, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1363:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1351:13:7" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1387:3:7", - "subExpression": { - "argumentTypes": null, - "id": 1832, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1387:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "1387:3:7" - }, - "nodeType": "ForStatement", - "src": "1346:142:7" - } - ] - }, - "id": 1854, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1807, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1806, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1032:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1804, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1032:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1805, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1032:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1031:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1808, - "nodeType": "ParameterList", - "parameters": [], - "src": "1071:0:7" - }, - "scope": 1961, - "src": "1017:477:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1873, - "nodeType": "Block", - "src": "1740:85:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1863, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1766:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - ], - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1758:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:20:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1865, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1758:25:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1861, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1750:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1750:34:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1868, - "nodeType": "ExpressionStatement", - "src": "1750:34:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1869, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1794:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1870, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1807:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "src": "1794:24:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "id": 1872, - "nodeType": "ExpressionStatement", - "src": "1794:24:7" - } - ] - }, - "id": 1874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1859, - "modifierName": { - "argumentTypes": null, - "id": 1858, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "1721:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1721:14:7" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1856, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1874, - "src": "1666:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1855, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "1666:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1665:32:7" - }, - "payable": false, - "returnParameters": { - "id": 1860, - "nodeType": "ParameterList", - "parameters": [], - "src": "1740:0:7" - }, - "scope": 1961, - "src": "1640:185:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1900, - "nodeType": "Block", - "src": "2057:119:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1882, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2075:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2086:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2075:12:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1881, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2067:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2067:21:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1886, - "nodeType": "ExpressionStatement", - "src": "2067:21:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2106:23:7", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2107:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "id": 1889, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2121:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2107:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1887, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2098:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2098:32:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1893, - "nodeType": "ExpressionStatement", - "src": "2098:32:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1894, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2140:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1896, - "indexExpression": { - "argumentTypes": null, - "id": 1895, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2154:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2140:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2165:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2140:29:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "2140:29:7" - } - ] - }, - "id": 1901, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1879, - "modifierName": { - "argumentTypes": null, - "id": 1878, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2038:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2038:14:7" - } - ], - "name": "addToWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1877, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1876, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1998:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1998:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1997:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1880, - "nodeType": "ParameterList", - "parameters": [], - "src": "2057:0:7" - }, - "scope": 1961, - "src": "1974:202:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1920, - "nodeType": "Block", - "src": "2418:88:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1909, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2436:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1911, - "indexExpression": { - "argumentTypes": null, - "id": 1910, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2450:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2436:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1908, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2428:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2428:31:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1913, - "nodeType": "ExpressionStatement", - "src": "2428:31:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1914, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2469:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1916, - "indexExpression": { - "argumentTypes": null, - "id": 1915, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2483:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2469:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2494:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2469:30:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1919, - "nodeType": "ExpressionStatement", - "src": "2469:30:7" - } - ] - }, - "id": 1921, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1906, - "modifierName": { - "argumentTypes": null, - "id": 1905, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2399:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2399:14:7" - } - ], - "name": "removeFromWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1904, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1903, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1921, - "src": "2359:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1902, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2358:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1907, - "nodeType": "ParameterList", - "parameters": [], - "src": "2418:0:7" - }, - "scope": 1961, - "src": "2330:176:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1959, - "nodeType": "Block", - "src": "3029:276:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1939, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1923, - "src": "3155:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1937, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "3136:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3136:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3136:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1936, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3128:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3128:35:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1942, - "nodeType": "ExpressionStatement", - "src": "3128:35:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1944, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1931, - "src": "3181:9:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1945, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3194:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3194:20:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1947, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3194:25:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3181:38:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1943, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3173:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3173:47:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1950, - "nodeType": "ExpressionStatement", - "src": "3173:47:7" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1951, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "3234:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1953, - "indexExpression": { - "argumentTypes": null, - "id": 1952, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1925, - "src": "3248:2:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3234:17:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1956, - "nodeType": "IfStatement", - "src": "3230:46:7", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3272:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1935, - "id": 1955, - "nodeType": "Return", - "src": "3265:11:7" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3293:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1935, - "id": 1958, - "nodeType": "Return", - "src": "3286:12:7" - } - ] - }, - "id": 1960, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1932, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1923, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2900:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1922, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2900:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1925, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2916:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1924, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2916:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1927, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2928:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1926, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2928:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1929, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2943:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1928, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2943:5:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1931, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2955:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1930, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "2955:20:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2899:87:7" - }, - "payable": false, - "returnParameters": { - "id": 1935, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1934, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "3019:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1933, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3019:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3018:6:7" - }, - "scope": 1961, - "src": "2878:427:7", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - } - ], - "scope": 1962, - "src": "240:3067:7" - } - ], - "src": "0:3308:7" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "exportedSymbols": { - "WhitelistExtension": [ - 1961 - ] - }, - "id": 1962, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1761, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:7" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1762, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 19, - "src": "24:26:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1763, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 964, - "src": "51:27:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1764, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "271:9:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1765, - "nodeType": "InheritanceSpecifier", - "src": "271:9:7" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1961, - "linearizedBaseContracts": [ - 1961, - 18 - ], - "name": "WhitelistExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1768, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "288:51:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1766, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "288:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "57686974656c69737420457874656e73696f6e", - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "318:21:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", - "typeString": "literal_string \"Whitelist Extension\"" - }, - "value": "Whitelist Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1771, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "345:40:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1769, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "345:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "378:7:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1773, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "392:29:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1772, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "392:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1775, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "427:28:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1774, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "427:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1779, - "name": "isWhitelisted", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "528:46:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1778, - "keyType": { - "id": 1776, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "537:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "528:25:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1777, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "548:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1791, - "nodeType": "Block", - "src": "607:70:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1782, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "625:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "625:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1785, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "647:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "639:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "639:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "625:33:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1781, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "617:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "617:42:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1789, - "nodeType": "ExpressionStatement", - "src": "617:42:7" - }, - { - "id": 1790, - "nodeType": "PlaceholderStatement", - "src": "669:1:7" - } - ] - }, - "id": 1792, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1780, - "nodeType": "ParameterList", - "parameters": [], - "src": "604:2:7" - }, - "src": "581:96:7", - "visibility": "internal" - }, - { - "body": { - "id": 1802, - "nodeType": "Block", - "src": "863:32:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1799, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1795, - "src": "879:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - ], - "id": 1798, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1854, - "src": "873:5:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory)" - } - }, - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "873:15:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "873:15:7" - } - ] - }, - "id": 1803, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "WhitelistExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1795, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1803, - "src": "824:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1793, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "824:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1794, - "length": null, - "nodeType": "ArrayTypeName", - "src": "824:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "823:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1797, - "nodeType": "ParameterList", - "parameters": [], - "src": "863:0:7" - }, - "scope": 1961, - "src": "796:99:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1853, - "nodeType": "Block", - "src": "1071:423:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1811, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1233:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1225:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1225:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1813, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1248:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1225:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1809, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1217:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1217:33:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "1217:33:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1817, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1301:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1819, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1325:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1325:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1818, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1314:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1314:22:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1301:35:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1823, - "nodeType": "ExpressionStatement", - "src": "1301:35:7" - }, - { - "body": { - "id": 1851, - "nodeType": "Block", - "src": "1392:96:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1836, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1414:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1838, - "indexExpression": { - "argumentTypes": null, - "id": 1837, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1423:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1414:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1429:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1414:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1835, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1406:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:25:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1842, - "nodeType": "ExpressionStatement", - "src": "1406:25:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1843, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "1445:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1847, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1844, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1459:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1846, - "indexExpression": { - "argumentTypes": null, - "id": 1845, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1468:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1459:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1445:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1473:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1445:32:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1850, - "nodeType": "ExpressionStatement", - "src": "1445:32:7" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1828, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1366:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1829, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1370:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1370:15:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1366:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1852, - "initializationExpression": { - "assignments": [ - 1825 - ], - "declarations": [ - { - "constant": false, - "id": 1825, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1351:9:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1351:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1827, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1363:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1351:13:7" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1387:3:7", - "subExpression": { - "argumentTypes": null, - "id": 1832, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1387:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "1387:3:7" - }, - "nodeType": "ForStatement", - "src": "1346:142:7" - } - ] - }, - "id": 1854, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1807, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1806, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1032:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1804, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1032:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1805, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1032:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1031:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1808, - "nodeType": "ParameterList", - "parameters": [], - "src": "1071:0:7" - }, - "scope": 1961, - "src": "1017:477:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1873, - "nodeType": "Block", - "src": "1740:85:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1863, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1766:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - ], - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1758:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:20:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1865, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1758:25:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1861, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1750:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1750:34:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1868, - "nodeType": "ExpressionStatement", - "src": "1750:34:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1869, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1794:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1870, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1807:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "src": "1794:24:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "id": 1872, - "nodeType": "ExpressionStatement", - "src": "1794:24:7" - } - ] - }, - "id": 1874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1859, - "modifierName": { - "argumentTypes": null, - "id": 1858, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "1721:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1721:14:7" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1856, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1874, - "src": "1666:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1855, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "1666:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1665:32:7" - }, - "payable": false, - "returnParameters": { - "id": 1860, - "nodeType": "ParameterList", - "parameters": [], - "src": "1740:0:7" - }, - "scope": 1961, - "src": "1640:185:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1900, - "nodeType": "Block", - "src": "2057:119:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1882, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2075:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2086:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2075:12:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1881, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2067:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2067:21:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1886, - "nodeType": "ExpressionStatement", - "src": "2067:21:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2106:23:7", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2107:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "id": 1889, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2121:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2107:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1887, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2098:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2098:32:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1893, - "nodeType": "ExpressionStatement", - "src": "2098:32:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1894, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2140:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1896, - "indexExpression": { - "argumentTypes": null, - "id": 1895, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2154:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2140:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2165:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2140:29:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "2140:29:7" - } - ] - }, - "id": 1901, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1879, - "modifierName": { - "argumentTypes": null, - "id": 1878, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2038:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2038:14:7" - } - ], - "name": "addToWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1877, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1876, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1998:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1998:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1997:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1880, - "nodeType": "ParameterList", - "parameters": [], - "src": "2057:0:7" - }, - "scope": 1961, - "src": "1974:202:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1920, - "nodeType": "Block", - "src": "2418:88:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1909, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2436:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1911, - "indexExpression": { - "argumentTypes": null, - "id": 1910, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2450:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2436:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1908, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2428:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2428:31:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1913, - "nodeType": "ExpressionStatement", - "src": "2428:31:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1914, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2469:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1916, - "indexExpression": { - "argumentTypes": null, - "id": 1915, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2483:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2469:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2494:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2469:30:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1919, - "nodeType": "ExpressionStatement", - "src": "2469:30:7" - } - ] - }, - "id": 1921, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1906, - "modifierName": { - "argumentTypes": null, - "id": 1905, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2399:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2399:14:7" - } - ], - "name": "removeFromWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1904, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1903, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1921, - "src": "2359:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1902, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2358:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1907, - "nodeType": "ParameterList", - "parameters": [], - "src": "2418:0:7" - }, - "scope": 1961, - "src": "2330:176:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1959, - "nodeType": "Block", - "src": "3029:276:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1939, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1923, - "src": "3155:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1937, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "3136:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3136:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3136:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1936, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3128:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3128:35:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1942, - "nodeType": "ExpressionStatement", - "src": "3128:35:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1944, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1931, - "src": "3181:9:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1945, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3194:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3194:20:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1947, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3194:25:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3181:38:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1943, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3173:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3173:47:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1950, - "nodeType": "ExpressionStatement", - "src": "3173:47:7" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1951, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "3234:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1953, - "indexExpression": { - "argumentTypes": null, - "id": 1952, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1925, - "src": "3248:2:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3234:17:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1956, - "nodeType": "IfStatement", - "src": "3230:46:7", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3272:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1935, - "id": 1955, - "nodeType": "Return", - "src": "3265:11:7" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3293:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1935, - "id": 1958, - "nodeType": "Return", - "src": "3286:12:7" - } - ] - }, - "id": 1960, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1932, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1923, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2900:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1922, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2900:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1925, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2916:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1924, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2916:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1927, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2928:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1926, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2928:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1929, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2943:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1928, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2943:5:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1931, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2955:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1930, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "2955:20:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2899:87:7" - }, - "payable": false, - "returnParameters": { - "id": 1935, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1934, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "3019:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1933, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3019:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3018:6:7" - }, - "scope": 1961, - "src": "2878:427:7", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - } - ], - "scope": 1962, - "src": "240:3067:7" - } - ], - "src": "0:3308:7" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xd46e430c8949ebff0abe12ba43657a706e7312fa", - "transactionHash": "0xb509689ff0e5d576d0d387957af06ac47680f15fb6792c1e699ffbaf056cd1a5" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x9e170c48fc139d12f5f21c62526180fcecc3fba5", - "transactionHash": "0x992f285c128baa71bf36c278113c4286210616d32f21aa920ad11c990fd62069" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xb5d9423b5e38ccdc3d578f1f0347e7fba3641474", - "transactionHash": "0x66e2aea779f2c020e2c01741d018f5d7ea897659a32f2c7eb58add9b29ca981b" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x1e23400dccfd4764b3ae1c5b8cd91a4450c4a3a9", - "transactionHash": "0x367fe2685adc2fffdbdeaa57294f376e0249544c3169f1d80387d9cadcf81a97" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.036Z" -} \ No newline at end of file From 26c4d8ffda0fa7b6c4616d546119c7d69f8b9832 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 10:22:57 +0200 Subject: [PATCH 08/30] WA-238 added grantedSelector and its test for displaying safe if user is owner --- src/routes/safe/container/index.jsx | 12 ++-- src/routes/safe/container/selector.js | 32 +++++++++- src/routes/safe/store/selectors/index.js | 2 +- .../safe/store/test/granted.selector.js | 61 +++++++++++++++++++ src/routes/safe/store/test/safe.spec.js | 4 ++ 5 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 src/routes/safe/store/test/granted.selector.js diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 62edd4383a..7aebf94c8b 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -6,7 +6,9 @@ import Layout from '~/routes/safe/component/Layout' import selector, { type SelectorProps } from './selector' import actions, { type Actions } from './actions' -type Props = Actions & SelectorProps +type Props = Actions & SelectorProps & { + granted: boolean, +} class SafeView extends React.PureComponent { componentDidMount() { @@ -31,15 +33,17 @@ class SafeView extends React.PureComponent { intervalId: IntervalID render() { - const { safe, provider, balance } = this.props + const { + safe, provider, balance, granted, + } = this.props return ( - + /> } ) } diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 3ac175f520..6330056685 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -1,7 +1,11 @@ // @flow -import { createStructuredSelector } from 'reselect' -import { balanceSelector, safeSelector, type SafeSelectorProps } from '~/routes/safe/store/selectors' -import { providerNameSelector } from '~/wallets/store/selectors/index' +import { List } from 'immutable' +import { createSelector, createStructuredSelector, type Selector } from 'reselect' +import { balanceSelector, safeSelector, type RouterProps, type SafeSelectorProps } from '~/routes/safe/store/selectors' +import { providerNameSelector, userAccountSelector } from '~/wallets/store/selectors/index' +import { type Safe } from '~/routes/safe/store/model/safe' +import { type Owner } from '~/routes/safe/store/model/owner' +import { type GlobalState } from '~/store/index' export type SelectorProps = { safe: SafeSelectorProps, @@ -9,8 +13,30 @@ export type SelectorProps = { balance: string, } +export const grantedSelector: Selector = createSelector( + userAccountSelector, + safeSelector, + (userAccount: string, safe: Safe | typeof undefined): boolean => { + if (!safe) { + return false + } + + if (!userAccount) { + return false + } + + const owners: List = safe.get('owners') + if (!owners) { + return false + } + + return owners.find((owner: Owner) => owner.get('address') === userAccount) !== undefined + }, +) + export default createStructuredSelector({ safe: safeSelector, provider: providerNameSelector, balance: balanceSelector, + granted: grantedSelector, }) diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index 1bcd96f22a..e6bf40ebea 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -8,7 +8,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import { safesMapSelector } from '~/routes/safeList/store/selectors' import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' -type RouterProps = { +export type RouterProps = { match: Match, } diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js new file mode 100644 index 0000000000..0f91cd8d1a --- /dev/null +++ b/src/routes/safe/store/test/granted.selector.js @@ -0,0 +1,61 @@ +// @flow +import { Map } from 'immutable' +import { type Match } from 'react-router-dom' +import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import { type Safe } from '~/routes/safe/store/model/safe' +import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { buildMathPropsFrom } from '~/test/buildReactRouterProps' +import { getProviderInfo } from '~/wallets/getWeb3' +import { grantedSelector } from '~/routes/safe/container/selector' +import { makeProvider } from '~/wallets/store/model/provider' + +const grantedSelectorTests = () => { + let provider + beforeEach(async () => { + provider = await getProviderInfo() + }) + + describe('Safe Selector[grantedSelector]', () => { + it('should be granted to operate when a safe when the user is owner', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account)) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(true) + }) + + it('should NOT be granted to operate with a Safe when the user is NOT owner', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe('inventedOwner')) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(false) + }) + }) +} + +export default grantedSelectorTests diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index 57521e6f8e..c8e45daac0 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -4,6 +4,7 @@ import safeReducerTests from './safe.reducer' import dailyLimitReducerTests from './dailyLimit.reducer' import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' +import grantedSelectorTests from './granted.selector' describe('Safe Test suite', () => { // ACTIONS AND REDUCERS @@ -16,4 +17,7 @@ describe('Safe Test suite', () => { // BALANCE SELECTOR balanceSelectorTests() + + // GRANTED SELECTOR + grantedSelectorTests() }) From bb3c5127f6287e645c29d22f69382fbcc373deb2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 10:48:38 +0200 Subject: [PATCH 09/30] WA-238 Using NoRights component on safe route layout --- src/routes/safe/component/NoRights/index.jsx | 31 +++++++++++++++++++ .../safe/component/NoRights/index.stories.js | 17 ++++++++++ src/routes/safe/container/index.jsx | 10 +++--- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/routes/safe/component/NoRights/index.jsx create mode 100644 src/routes/safe/component/NoRights/index.stories.js diff --git a/src/routes/safe/component/NoRights/index.jsx b/src/routes/safe/component/NoRights/index.jsx new file mode 100644 index 0000000000..291fd4ba7d --- /dev/null +++ b/src/routes/safe/component/NoRights/index.jsx @@ -0,0 +1,31 @@ +// @flow +import * as React from 'react' +import Bold from '~/components/layout/Bold' +import Button from '~/components/layout/Button' +import Link from '~/components/layout/Link' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph/index' +import { SAFELIST_ADDRESS } from '~/routes/routes' + +const NoRights = () => ( + + + + You do not have rights to operate with this safe. Pleave visit the Safe List. + + + + + + +) + +export default NoRights diff --git a/src/routes/safe/component/NoRights/index.stories.js b/src/routes/safe/component/NoRights/index.stories.js new file mode 100644 index 0000000000..469ef4842f --- /dev/null +++ b/src/routes/safe/component/NoRights/index.stories.js @@ -0,0 +1,17 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import styles from '~/components/layout/PageFrame/index.scss' +import Component from './index.jsx' + +const FrameDecorator = story => ( +
+ { story() } +
+) + +storiesOf('Components', module) + .addDecorator(FrameDecorator) + .add('NoRights', () => ( + + )) diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 7aebf94c8b..ea291ffc2b 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -3,6 +3,7 @@ import * as React from 'react' import { connect } from 'react-redux' import Page from '~/components/layout/Page' import Layout from '~/routes/safe/component/Layout' +import NoRights from '~/routes/safe/component/NoRights' import selector, { type SelectorProps } from './selector' import actions, { type Actions } from './actions' @@ -39,11 +40,10 @@ class SafeView extends React.PureComponent { return ( - { granted && } + { granted + ? + : + } ) } From 63cb857b7b29b71875640135b24874b52e4f9267 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:07:38 +0200 Subject: [PATCH 10/30] WA-238 Rename calculateInitialState to safeInitialState --- src/routes/safe/store/reducer/safe.js | 2 +- src/routes/safe/store/test/safe.reducer.js | 6 +++--- src/store/index.js | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index ec6543eff8..d430c49dd1 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -25,7 +25,7 @@ const buildSafesFrom = (loadedSafes: Object): State => { }) } -export const calculateInitialState = (): State => { +export const safeInitialState = (): State => { const storedSafes = load(SAFES_KEY) return storedSafes ? buildSafesFrom(storedSafes) : Map() diff --git a/src/routes/safe/store/test/safe.reducer.js b/src/routes/safe/store/test/safe.reducer.js index e27e5cd511..57edaed77e 100644 --- a/src/routes/safe/store/test/safe.reducer.js +++ b/src/routes/safe/store/test/safe.reducer.js @@ -1,7 +1,7 @@ // @flow import { combineReducers, createStore, applyMiddleware, compose } from 'redux' import thunk from 'redux-thunk' -import safeReducer, { calculateInitialState, SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import safeReducer, { safeInitialState, SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' import addSafe from '~/routes/safe/store/actions/addSafe' import * as SafeFields from '~/routes/open/components/fields' import { getAccountsFrom, getNamesFrom } from '~/routes/open/utils/safeDataExtractor' @@ -70,11 +70,11 @@ const providerReducerTests = () => { getAccountsFrom(formValues), )) - const anotherStore = aStore({ [SAFE_REDUCER_ID]: calculateInitialState() }) + const anotherStore = aStore({ [SAFE_REDUCER_ID]: safeInitialState() }) const safes = anotherStore.getState()[SAFE_REDUCER_ID] // THEN - expect(calculateInitialState()).toEqual(safes) + expect(safeInitialState()).toEqual(safes) }) }) } diff --git a/src/store/index.js b/src/store/index.js index 882978f123..8eca5d8ca5 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,7 +4,7 @@ import { routerMiddleware, routerReducer } from 'react-router-redux' import { combineReducers, createStore, applyMiddleware, compose, type Reducer, type Store } from 'redux' import thunk from 'redux-thunk' import provider, { PROVIDER_REDUCER_ID, type State as ProviderState } from '~/wallets/store/reducer/provider' -import safe, { SAFE_REDUCER_ID, calculateInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' +import safe, { SAFE_REDUCER_ID, safeInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' import balances, { BALANCE_REDUCER_ID, type State as BalancesState } from '~/routes/safe/store/reducer/balances' export const history = createBrowserHistory() @@ -29,7 +29,9 @@ const reducers: Reducer = combineReducers({ [BALANCE_REDUCER_ID]: balances, }) -const initialState = { [SAFE_REDUCER_ID]: calculateInitialState() } +const initialState = { + [SAFE_REDUCER_ID]: safeInitialState(), +} export const store: Store = createStore(reducers, initialState, finalCreateStore) From 89b1b5ffe0d85089b0bf949240477f8cc96fbf50 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:23:41 +0200 Subject: [PATCH 11/30] WA-238 adding transactions property to redux store --- .../safe/store/actions/addTransactions.js | 6 ++++++ src/routes/safe/store/reducer/transactions.js | 17 +++++++++++++++++ src/routes/safe/store/test/granted.selector.js | 2 ++ src/routes/safe/store/test/safe.selector.js | 2 ++ .../safeList/store/test/safes.selector.js | 5 +++++ src/store/index.js | 4 ++++ 6 files changed, 36 insertions(+) create mode 100644 src/routes/safe/store/actions/addTransactions.js create mode 100644 src/routes/safe/store/reducer/transactions.js diff --git a/src/routes/safe/store/actions/addTransactions.js b/src/routes/safe/store/actions/addTransactions.js new file mode 100644 index 0000000000..e8a2afee25 --- /dev/null +++ b/src/routes/safe/store/actions/addTransactions.js @@ -0,0 +1,6 @@ +// @flow +import { createAction } from 'redux-actions' + +export const ADD_TRANSACTIONS = 'ADD_TRANSACTIONS' + +export default createAction(ADD_TRANSACTIONS) diff --git a/src/routes/safe/store/reducer/transactions.js b/src/routes/safe/store/reducer/transactions.js new file mode 100644 index 0000000000..81961a954e --- /dev/null +++ b/src/routes/safe/store/reducer/transactions.js @@ -0,0 +1,17 @@ +// @flow +import { List, Map } from 'immutable' +import { handleActions, type ActionType } from 'redux-actions' +import addTransactions, { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/addTransactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' + +export const TRANSACTIONS_REDUCER_ID = 'transactions' + +export type State = Map> + +export const transactionsInitialState = () => loadSafeTransactions() + +export default handleActions({ + [ADD_TRANSACTIONS]: (state: State, action: ActionType): State => + action.payload, +}, Map()) diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js index 0f91cd8d1a..2a984643c6 100644 --- a/src/routes/safe/store/test/granted.selector.js +++ b/src/routes/safe/store/test/granted.selector.js @@ -27,6 +27,7 @@ const grantedSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), balances: undefined, + transactions: undefined, } // WHEN @@ -47,6 +48,7 @@ const grantedSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/routes/safe/store/test/safe.selector.js b/src/routes/safe/store/test/safe.selector.js index 1626665b10..0306d6f96e 100644 --- a/src/routes/safe/store/test/safe.selector.js +++ b/src/routes/safe/store/test/safe.selector.js @@ -15,6 +15,7 @@ const safeSelectorTests = () => { [SAFE_REDUCER_ID]: Map(), providers: undefined, balances: undefined, + transactions: undefined, } const match: Match = buildMathPropsFrom('fooAddress') @@ -38,6 +39,7 @@ const safeSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: undefined, balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/routes/safeList/store/test/safes.selector.js b/src/routes/safeList/store/test/safes.selector.js index f268154cc9..b5946457d0 100644 --- a/src/routes/safeList/store/test/safes.selector.js +++ b/src/routes/safeList/store/test/safes.selector.js @@ -22,6 +22,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: Map(), balances: undefined, + transactions: undefined, } const emptyList = List([]) @@ -42,6 +43,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, balances: undefined, + transactions: undefined, } // WHEN @@ -61,6 +63,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, balances: undefined, + transactions: undefined, } // WHEN @@ -81,6 +84,7 @@ const safesListSelectorTests = () => { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, balances: undefined, + transactions: undefined, } // WHEN @@ -102,6 +106,7 @@ const safesListSelectorTests = () => { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/store/index.js b/src/store/index.js index 8eca5d8ca5..615283418c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -6,6 +6,7 @@ import thunk from 'redux-thunk' import provider, { PROVIDER_REDUCER_ID, type State as ProviderState } from '~/wallets/store/reducer/provider' import safe, { SAFE_REDUCER_ID, safeInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' import balances, { BALANCE_REDUCER_ID, type State as BalancesState } from '~/routes/safe/store/reducer/balances' +import transactions, { type State as TransactionsState, transactionsInitialState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' export const history = createBrowserHistory() @@ -20,6 +21,7 @@ export type GlobalState = { providers: ProviderState, safes: SafeState, balances: BalancesState, + transactions: TransactionsState, } const reducers: Reducer = combineReducers({ @@ -27,10 +29,12 @@ const reducers: Reducer = combineReducers({ [PROVIDER_REDUCER_ID]: provider, [SAFE_REDUCER_ID]: safe, [BALANCE_REDUCER_ID]: balances, + [TRANSACTIONS_REDUCER_ID]: transactions, }) const initialState = { [SAFE_REDUCER_ID]: safeInitialState(), + [TRANSACTIONS_REDUCER_ID]: transactionsInitialState(), } export const store: Store = createStore(reducers, initialState, finalCreateStore) From f4ca495ea000527ca65b3084b7ea2b2ac5816267 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:34:56 +0200 Subject: [PATCH 12/30] WA-238 Adding fetchTransactions action --- .../Transactions/test/transactions.test.js | 3 +- .../component/Transactions/transactions.js | 27 ++------------ .../safe/store/actions/fetchTransactions.js | 36 +++++++++++++++++++ src/routes/safe/store/reducer/transactions.js | 2 +- 4 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 src/routes/safe/store/actions/fetchTransactions.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 23e8fea436..029814bdb1 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,10 +1,11 @@ // @flow import { List, Map } from 'immutable' -import { createTransaction, loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { createTransaction } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' +import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 1bf5de411f..d40ee7a614 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -1,8 +1,8 @@ // @flow -import { List, Map } from 'immutable' -import { type Owner, makeOwner } from '~/routes/safe/store/model/owner' +import { List } from 'immutable' +import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' -import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' const buildConfirmationsFrom = (owners: List, creator: string): List => { @@ -52,24 +52,3 @@ export const createTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } - -export const loadSafeTransactions = () => { - const safes = load(TX_KEY) || {} - - return Map().withMutations((map: Map>) => - Object.keys(safes).map((safe: string) => { - const safeTxs = safes[safe] - const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { - const { confirmations } = tx - const txRecord = makeTransaction({ - ...tx, - confirmations: List(confirmations.map((conf: ConfirmationProps) => - makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), - }) - - return txRecord - }) - - return map.set(safe, List(safeTxsRecord)) - })) -} diff --git a/src/routes/safe/store/actions/fetchTransactions.js b/src/routes/safe/store/actions/fetchTransactions.js new file mode 100644 index 0000000000..11f33e136b --- /dev/null +++ b/src/routes/safe/store/actions/fetchTransactions.js @@ -0,0 +1,36 @@ +// @flow +import { List, Map } from 'immutable' +import type { Dispatch as ReduxDispatch } from 'redux' +import { type GlobalState } from '~/store/index' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import addTransactions from './addTransactions' + +export const loadSafeTransactions = () => { + const safes = load(TX_KEY) || {} + + return Map().withMutations((map: Map>) => + Object.keys(safes).map((safe: string) => { + const safeTxs = safes[safe] + const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { + const { confirmations } = tx + const txRecord = makeTransaction({ + ...tx, + confirmations: List(confirmations.map((conf: ConfirmationProps) => + makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), + }) + + return txRecord + }) + + return map.set(safe, List(safeTxsRecord)) + })) +} + +export default () => async (dispatch: ReduxDispatch) => { + const transactions: Map> = await loadSafeTransactions() + + return dispatch(addTransactions(transactions)) +} diff --git a/src/routes/safe/store/reducer/transactions.js b/src/routes/safe/store/reducer/transactions.js index 81961a954e..905eb764d0 100644 --- a/src/routes/safe/store/reducer/transactions.js +++ b/src/routes/safe/store/reducer/transactions.js @@ -3,7 +3,7 @@ import { List, Map } from 'immutable' import { handleActions, type ActionType } from 'redux-actions' import addTransactions, { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/addTransactions' import { type Transaction } from '~/routes/safe/store/model/transaction' -import { loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' export const TRANSACTIONS_REDUCER_ID = 'transactions' From bc9b2be6a11be3263a7bdcc389e21b133f1a4355 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 12:05:50 +0200 Subject: [PATCH 13/30] WA-238 Add TXs row in Safe view --- src/routes/safe/component/Safe/MultisigTx.jsx | 52 +++++++++++++++++++ src/routes/safe/component/Safe/index.jsx | 14 +++++ 2 files changed, 66 insertions(+) create mode 100644 src/routes/safe/component/Safe/MultisigTx.jsx diff --git a/src/routes/safe/component/Safe/MultisigTx.jsx b/src/routes/safe/component/Safe/MultisigTx.jsx new file mode 100644 index 0000000000..a70774db8a --- /dev/null +++ b/src/routes/safe/component/Safe/MultisigTx.jsx @@ -0,0 +1,52 @@ +// @flow +import * as React from 'react' +import { ListItem } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import AcoountBalanceWallet from 'material-ui-icons/AccountBalanceWallet' +import Button from '~/components/layout/Button' +import ListItemText from '~/components/List/ListItemText' + +type Props = { + balance: string, + onAddTx: () => void, + onSeeTxs: () => void, +} + +export const ADD_MULTISIG_BUTTON_TEXT = 'Add' +export const SEE_MULTISIG_BUTTON_TEXT = 'TXs' + +const addStyle = { + marginRight: '10px', +} + +const DailyLimitComponent = ({ balance, onAddTx, onSeeTxs }: Props) => { + const text = `Available ${balance} ETH` + const disabled = Number(balance) <= 0 + + return ( + + + + + + + + + ) +} + +export default DailyLimitComponent diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 0bf495bdc7..4a40137390 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -16,6 +16,7 @@ import Balance from './Balance' import Owners from './Owners' import Confirmations from './Confirmations' import DailyLimit from './DailyLimit' +import MultisigTx from './MultisigTx' const safeIcon = require('./assets/gnosis_safe.svg') @@ -43,6 +44,18 @@ class GnoSafe extends React.PureComponent { this.setState({ component: }) } + onAddTx = () => { + const { safe } = this.props + + this.setState({ component: }) + } + + onSeeTxs = () => { + const { safe } = this.props + + this.setState({ component: }) + } + render() { const { safe, balance } = this.props const { component } = this.state @@ -56,6 +69,7 @@ class GnoSafe extends React.PureComponent {
+ From 0fb1758fc51541cb2a42390b25dfb879892e5928 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 12:29:40 +0200 Subject: [PATCH 14/30] WA-238 Added test for enabling add tx button when the safe has funds --- src/routes/safe/component/Safe.test.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index db34024835..4dfb8bedf5 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -16,6 +16,7 @@ import { getBalanceInEtherOf } from '~/wallets/getWeb3' import { sleep } from '~/utils/timer' import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' +import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' describe('React DOM TESTS > Withdrawn funds from safe', () => { let SafeDom @@ -26,8 +27,6 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { store = aNewStore() // deploy safe updating store address = await aDeployedSafe(store) - // add funds to safe - await addEtherTo(address, '0.1') // navigate to SAFE route history.push(`${SAFELIST_ADDRESS}/${address}`) SafeDom = TestUtils.renderIntoDocument(( @@ -40,6 +39,8 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { }) it('should withdrawn funds under dailyLimit without needing confirmations', async () => { + // add funds to safe + await addEtherTo(address, '0.1') const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) // $FlowFixMe @@ -74,6 +75,9 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { }) it('spentToday dailyLimitModule property is updated correctly', async () => { + // add funds to safe + await addEtherTo(address, '0.1') + // GIVEN in beforeEach // WHEN await executeWithdrawnOn(address, 0.01) @@ -86,4 +90,18 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { expect(dailyLimit.value).toBe(0.5) expect(dailyLimit.spentToday).toBe(0.02) }) + + it('add multisig txs button disabled when balance is 0', async () => { + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + // $FlowFixMe + const buttons = TestUtils.scryRenderedComponentsWithType(Safe, Button) + const addTxButton = buttons[1] + expect(addTxButton.props.children).toEqual(ADD_MULTISIG_BUTTON_TEXT) + expect(addTxButton.props.disabled).toBe(true) + + await addEtherTo(address, '0.1') + await sleep(1800) + + expect(addTxButton.props.disabled).toBe(false) + }) }) From 3dcb551268af7ac901db0c5057b2a96113490305 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:19:16 +0200 Subject: [PATCH 15/30] WA-238 Multisig transaction form --- src/routes/safe/component/Safe/index.jsx | 5 +- .../MultisigForm/MultisigForm.stories.js | 21 +++++ .../Transactions/MultisigForm/index.jsx | 77 +++++++++++++++++++ .../component/Transactions/ReviewTx/index.jsx | 8 ++ .../safe/component/Transactions/index.jsx | 72 +++++++++++++++++ .../component/Transactions/transactions.js | 4 + 6 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js create mode 100644 src/routes/safe/component/Transactions/MultisigForm/index.jsx create mode 100644 src/routes/safe/component/Transactions/ReviewTx/index.jsx create mode 100644 src/routes/safe/component/Transactions/index.jsx diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 4a40137390..8ea3490f7c 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,6 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' +import Transactions from '~/routes/safe/component/Transactions' import Address from './Address' import Balance from './Balance' @@ -45,9 +46,7 @@ class GnoSafe extends React.PureComponent { } onAddTx = () => { - const { safe } = this.props - - this.setState({ component: }) + this.setState({ component: }) } onSeeTxs = () => { diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js new file mode 100644 index 0000000000..355830727f --- /dev/null +++ b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js @@ -0,0 +1,21 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import Stepper from '~/components/Stepper' +import styles from '~/components/layout/PageFrame/index.scss' +import MultisigForm from './index' + + +const FrameDecorator = story => ( +
+ { story() } +
+) + +storiesOf('Components', module) + .addDecorator(FrameDecorator) + .add('MultisigForm', () => ( + + { MultisigForm } + + )) diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/Transactions/MultisigForm/index.jsx new file mode 100644 index 0000000000..4fd0281634 --- /dev/null +++ b/src/routes/safe/component/Transactions/MultisigForm/index.jsx @@ -0,0 +1,77 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import Heading from '~/components/layout/Heading' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' + +export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' + +export const safeFieldsValidation = (values: Object) => { + const errors = {} + + if (Number.parseInt(values.owners, 10) < Number.parseInt(values.confirmations, 10)) { + errors.confirmations = CONFIRMATIONS_ERROR + } + + return errors +} + +type Props = { + balance: number, +} + +export const inLimit = (limit: number, spentToday: number) => (value: string) => { + const amount = Number(value) + const max = limit - spentToday + if (amount <= max) { + return undefined + } + + return `Should not exceed ${max} ETH (amount to reach available balance)` +} + +const WithdrawnForm = ({ balance }: Props) => () => ( + + + Multisig Transaction + + + {`Available balance: ${balance} ETH`} + + + + + + + + + + + +) + +export default WithdrawnForm diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/Transactions/ReviewTx/index.jsx new file mode 100644 index 0000000000..fde267f21e --- /dev/null +++ b/src/routes/safe/component/Transactions/ReviewTx/index.jsx @@ -0,0 +1,8 @@ +// @flow +import * as React from 'react' + +const ReviewTx = () => () => ( +
ReviewTx
+) + +export default ReviewTx diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx new file mode 100644 index 0000000000..555832b5ae --- /dev/null +++ b/src/routes/safe/component/Transactions/index.jsx @@ -0,0 +1,72 @@ +// @flow +import * as React from 'react' +import Stepper from '~/components/Stepper' +import MultisigForm from './MultisigForm' +import ReviewTx from './ReviewTx' + +const getSteps = () => [ + 'Fill Mutlisig Tx form', 'Review Tx', +] + +/* +type Props = SelectorProps & Actions & { + safeAddress: string, + dailyLimit: DailyLimit, +} +*/ + +type Props = { + balance: number, + onReset: () => void, +} + +type State = { + done: boolean, +} + +export const SEE_TXS_BUTTON_TEXT = 'VISIT TXS' + +class Transactions extends React.Component { + state = { + done: false, + } + + onTransaction = async (values: Object) => { + // eslint-disable-next-line + console.log("Executing transaction with params " + JSON.stringify(values)) + } + + onReset = () => { + this.setState({ done: false }) + this.props.onReset() // This is for show the TX list component + } + + render() { + const { done } = this.state + const { balance } = this.props + const steps = getSteps() + const finishedButton = + + return ( + + + + { MultisigForm } + + + { ReviewTx } + + + + ) + } +} + +export default Transactions + diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index d40ee7a614..d70fc7966d 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -5,6 +5,10 @@ import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +export const TX_NAME_PARAM = 'txName' +export const TX_DESTINATION_PARAM = 'txDestination' +export const TX_VALUE_PARAM = 'txValue' + const buildConfirmationsFrom = (owners: List, creator: string): List => { if (!owners) { throw new Error('This safe has no owners') From fdfeceef8b8624da165d66aedd5fae29e6a61dc8 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:29:30 +0200 Subject: [PATCH 16/30] WA-238 Fix Withdrawn and Multisig Forms --- .../MultisigForm/MultisigForm.stories.js | 16 ++++++++++++---- .../WithdrawnForm/WithdrawnForm.stories.js | 18 +++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js index 355830727f..6c65ab2683 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js +++ b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js @@ -7,7 +7,7 @@ import MultisigForm from './index' const FrameDecorator = story => ( -
+
{ story() }
) @@ -15,7 +15,15 @@ const FrameDecorator = story => ( storiesOf('Components', module) .addDecorator(FrameDecorator) .add('MultisigForm', () => ( - - { MultisigForm } - + } + onSubmit={() => {}} + steps={['Multisig TX Form', 'Review TX']} + onReset={() => {}} + > + + { MultisigForm } + + )) diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js index 88ae93de64..a914a0a3e6 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js @@ -7,15 +7,23 @@ import WithdrawnForm from './index' const FrameDecorator = story => ( -
+
{ story() }
) storiesOf('Components', module) .addDecorator(FrameDecorator) - .add('WitdrawnForm', () => ( - - { WithdrawnForm } - + .add('WithdrawnForm', () => ( + } + onSubmit={() => {}} + steps={['Fill Withdrawn Form', 'Review Withdrawn']} + onReset={() => {}} + > + + { WithdrawnForm } + + )) From 67552e211f850badcc79ce0aad4922d23c497441 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:33:35 +0200 Subject: [PATCH 17/30] WA-238 Review TX component --- .../component/Transactions/ReviewTx/index.jsx | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/Transactions/ReviewTx/index.jsx index fde267f21e..b7bfb11098 100644 --- a/src/routes/safe/component/Transactions/ReviewTx/index.jsx +++ b/src/routes/safe/component/Transactions/ReviewTx/index.jsx @@ -1,8 +1,37 @@ // @flow import * as React from 'react' +import { CircularProgress } from 'material-ui/Progress' +import Block from '~/components/layout/Block' +import Bold from '~/components/layout/Bold' +import Heading from '~/components/layout/Heading' +import Paragraph from '~/components/layout/Paragraph' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' -const ReviewTx = () => () => ( -
ReviewTx
+type FormProps = { + values: Object, + submitting: boolean, +} + +const spinnerStyle = { + minHeight: '50px', +} + +const ReviewTx = () => ({ values, submitting }: FormProps) => ( + + Review the Multisig Tx + + Transaction Name: {values[TX_NAME_PARAM]} + + + Destination: {values[TX_DESTINATION_PARAM]} + + + Amount to transfer in ETH: {values[TX_VALUE_PARAM]} + + + { submitting && } + + ) export default ReviewTx From f9407397db37bbcc2948d5ad21d9cfd14de46444 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 11:31:28 +0200 Subject: [PATCH 18/30] WA-238 refactor inLimit form validator --- src/components/forms/validator.js | 10 ++++++++++ .../component/Transactions/MultisigForm/index.jsx | 14 ++------------ .../component/Withdrawn/WithdrawnForm/index.jsx | 14 ++------------ 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index fbc72d67aa..e5a54d22c6 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -47,3 +47,13 @@ export const uniqueAddress = (addresses: string[]) => (value: string) => export const composeValidators = (...validators: Function[]) => (value: Field) => validators.reduce((error, validator) => error || validator(value), undefined) + +export const inLimit = (limit: number, base: number, baseText: string) => (value: string) => { + const amount = Number(value) + const max = limit - base + if (amount <= max) { + return undefined + } + + return `Should not exceed ${max} ETH (amount to reach ${baseText})` +} diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/Transactions/MultisigForm/index.jsx index 4fd0281634..ed6f0371f1 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/index.jsx +++ b/src/routes/safe/component/Transactions/MultisigForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' @@ -23,16 +23,6 @@ type Props = { balance: number, } -export const inLimit = (limit: number, spentToday: number) => (value: string) => { - const amount = Number(value) - const max = limit - spentToday - if (amount <= max) { - return undefined - } - - return `Should not exceed ${max} ETH (amount to reach available balance)` -} - const WithdrawnForm = ({ balance }: Props) => () => ( @@ -66,7 +56,7 @@ const WithdrawnForm = ({ balance }: Props) => () => ( name={TX_VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0))} + validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0, 'available balance'))} placeholder="Amount in ETH*" text="Amount in ETH" /> diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx index 86998726e5..df5dbf3992 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdrawn/withdrawn' @@ -24,16 +24,6 @@ type Props = { spentToday: number, } -export const inLimit = (limit: number, spentToday: number) => (value: string) => { - const amount = Number(value) - const max = limit - spentToday - if (amount <= max) { - return undefined - } - - return `Should not exceed ${max} ETH (amount to reach daily limit)` -} - const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( @@ -47,7 +37,7 @@ const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( name={VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday))} + validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} placeholder="Amount in ETH*" text="Amount in ETH" /> From abb949702c9c4ffae7e7f4295af34bf1c87c12b3 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 13:23:04 +0200 Subject: [PATCH 19/30] WA-238 Adding create multisig tx logic --- src/routes/safe/component/Safe/index.jsx | 3 +- .../safe/component/Transactions/actions.js | 10 +++++ .../safe/component/Transactions/index.jsx | 37 +++++++++++++------ .../safe/component/Transactions/selector.js | 11 ++++++ .../Transactions/test/transactions.test.js | 22 +++++------ .../component/Transactions/transactions.js | 16 +++++++- 6 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 src/routes/safe/component/Transactions/actions.js create mode 100644 src/routes/safe/component/Transactions/selector.js diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 8ea3490f7c..0943067b01 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -46,7 +46,8 @@ class GnoSafe extends React.PureComponent { } onAddTx = () => { - this.setState({ component: }) + const { balance, safe } = this.props + this.setState({ component: }) } onSeeTxs = () => { diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/Transactions/actions.js new file mode 100644 index 0000000000..681ad469b2 --- /dev/null +++ b/src/routes/safe/component/Transactions/actions.js @@ -0,0 +1,10 @@ +// @flow +import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' + +export type Actions = { + fetchTransactions: typeof fetchTransactions, +} + +export default { + fetchTransactions, +} diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 555832b5ae..0f5cdaa49e 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -1,6 +1,12 @@ // @flow import * as React from 'react' +import { connect } from 'react-redux' import Stepper from '~/components/Stepper' +import { sleep } from '~/utils/timer' +import { type Safe } from '~/routes/safe/store/model/safe' +import actions, { type Actions } from './actions' +import selector, { type SelectorProps } from './selector' +import transaction, { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -8,14 +14,8 @@ const getSteps = () => [ 'Fill Mutlisig Tx form', 'Review Tx', ] -/* type Props = SelectorProps & Actions & { - safeAddress: string, - dailyLimit: DailyLimit, -} -*/ - -type Props = { + safe: Safe, balance: number, onReset: () => void, } @@ -32,8 +32,24 @@ class Transactions extends React.Component { } onTransaction = async (values: Object) => { - // eslint-disable-next-line - console.log("Executing transaction with params " + JSON.stringify(values)) + try { + const { safe, userAddress } = this.props + const nonce = Date.now() + const destination = values[TX_DESTINATION_PARAM] + const value = values[TX_VALUE_PARAM] + const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) + await createTransaction( + values[TX_NAME_PARAM], nonce, destination, value, userAddress, + safe.get('owners'), tx, safe.get('address'), safe.get('confirmations'), + ) + await sleep(1500) + this.props.fetchTransactions() + this.setState({ done: true }) + } catch (error) { + this.setState({ done: false }) + // eslint-disable-next-line + console.log('Error while creating multisig tx ' + error) + } } onReset = () => { @@ -68,5 +84,4 @@ class Transactions extends React.Component { } } -export default Transactions - +export default connect(selector, actions)(Transactions) diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js new file mode 100644 index 0000000000..9e7bfef11a --- /dev/null +++ b/src/routes/safe/component/Transactions/selector.js @@ -0,0 +1,11 @@ +// @flow +import { createStructuredSelector } from 'reselect' +import { userAccountSelector } from '~/wallets/store/selectors/index' + +export type SelectorProps = { + userAddress: userAccountSelector, +} + +export default createStructuredSelector({ + userAddress: userAccountSelector, +}) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 029814bdb1..dda2dff830 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -31,7 +31,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -51,11 +51,11 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -75,7 +75,7 @@ describe('Transactions Suite', () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' @@ -83,7 +83,7 @@ describe('Transactions Suite', () => { const secondSafeAddress = secondSafe.address createTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafe.get('name'), secondSafeAddress, secondSafe.get('confirmations'), + secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -102,7 +102,7 @@ describe('Transactions Suite', () => { const txFirstNonce = 11 createTransaction( txFirstName, txFirstNonce, destination, value, 'foo', - safe.get('owners'), '', safe.get('name'), safe.get('address'), safe.get('confirmations'), + safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -136,10 +136,10 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +147,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -161,7 +161,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) }) @@ -172,7 +172,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('name'), oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index d70fc7966d..e5ab22efcc 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -4,6 +4,8 @@ import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +import { getGnosisSafeContract } from '~/wallets/safeContracts' +import { getWeb3 } from '~/wallets/getWeb3' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' @@ -29,7 +31,6 @@ export const createTransaction = ( creator: string, owners: List, tx: string, - safeName: string, safeAddress: string, safeThreshold: number, ) => { @@ -56,3 +57,16 @@ export const createTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } + +const transactions = async (safeAddress: string, destination: string, value: number, nonce: number, user: string) => { + const web3 = getWeb3() + const GnosisSafe = await getGnosisSafeContract(web3) + const gnosisSafe = GnosisSafe.at(safeAddress) + + const valueInWei = web3.toWei(value, 'ether') + const CALL = 0 + + return gnosisSafe.approveTransactionWithParameters(destination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) +} + +export default transactions From f42aa0722f801188461bcdc8f16196f132368d2d Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 13:58:49 +0200 Subject: [PATCH 20/30] WA-238 rename createTransaction to storeTransaction --- .../safe/component/Transactions/index.jsx | 6 ++--- .../Transactions/test/transactions.test.js | 24 +++++++++---------- .../component/Transactions/transactions.js | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 0f5cdaa49e..2298820940 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import transaction, { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import transaction, { storeTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -38,9 +38,9 @@ class Transactions extends React.Component { const destination = values[TX_DESTINATION_PARAM] const value = values[TX_VALUE_PARAM] const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) - await createTransaction( + await storeTransaction( values[TX_NAME_PARAM], nonce, destination, value, userAddress, - safe.get('owners'), tx, safe.get('address'), safe.get('confirmations'), + safe.get('owners'), tx.tx, safe.get('address'), safe.get('confirmations'), ) await sleep(1500) this.props.fetchTransactions() diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index dda2dff830..4d3fdf7f6a 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { createTransaction } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' @@ -31,7 +31,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -51,11 +51,11 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -75,13 +75,13 @@ describe('Transactions Suite', () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 const secondSafeAddress = secondSafe.address - createTransaction( + storeTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), ) @@ -100,7 +100,7 @@ describe('Transactions Suite', () => { // WHEN const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 - createTransaction( + storeTransaction( txFirstName, txFirstNonce, destination, value, 'foo', safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), ) @@ -136,10 +136,10 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +147,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -161,7 +161,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) }) @@ -172,7 +172,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index e5ab22efcc..5db5a7cfd6 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -23,7 +23,7 @@ const buildConfirmationsFrom = (owners: List, creator: string): List makeConfirmation({ owner, status: owner.get('address') === creator })) } -export const createTransaction = ( +export const storeTransaction = ( name: string, nonce: number, destination: string, From ad7157b454841924b8f73db302fbc6eb98e3a236 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 16:38:20 +0200 Subject: [PATCH 21/30] WA-238 include hash in Confirmation record, added tests for safes with 1 owner they do not need confirmation --- .../Transactions/test/transactions.test.js | 91 ++++++++++++++----- .../Transactions/test/transactionsHelper.js | 4 +- src/routes/safe/store/model/confirmation.js | 2 + 3 files changed, 73 insertions(+), 24 deletions(-) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 4d3fdf7f6a..783aa2e83d 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,11 +1,12 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { @@ -31,7 +32,8 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const confirmations: List = buildConfirmationsFrom(owners, 'foo', 'confirmationHash') + storeTransaction(txName, nonce, destination, value, 'foo', confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -43,7 +45,7 @@ describe('Transactions Suite', () => { if (!safeTransactions) { throw new Error() } testSizeOfTransactions(safeTransactions, 1) - testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe with one confirmation', async () => { @@ -51,11 +53,14 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - storeTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(firstTxName, firstNonce, destination, value, creator, confirmations, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - storeTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const secondConfirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(secondTxName, secondNonce, destination, value, creator, secondConfirmations, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -67,23 +72,27 @@ describe('Transactions Suite', () => { if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) - testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) - testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 const secondSafeAddress = secondSafe.address + const secondCreator = '0x03db1a8b26d08df23337e9276a36b474510f0023' + const secondConfirmations: List = buildConfirmationsFrom(secondSafe.get('owners'), secondCreator, 'confirmationHash') storeTransaction( - txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), + txSecondName, txSecondNonce, destination, value, secondCreator, + secondConfirmations, '', secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -100,9 +109,10 @@ describe('Transactions Suite', () => { // WHEN const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 + const txConfirmations: List = buildConfirmationsFrom(owners, creator, 'secondConfirmationHash') storeTransaction( - txFirstName, txFirstNonce, destination, value, 'foo', - safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), + txFirstName, txFirstNonce, destination, value, creator, + txConfirmations, '', safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -116,19 +126,19 @@ describe('Transactions Suite', () => { testTransactionFrom( transactions.get(safe.address), 0, txName, nonce, value, 2, destination, - 'foo', owners.get(0), owners.get(1), + 'foo', 'confirmationHash', owners.get(0), owners.get(1), ) testTransactionFrom( transactions.get(safe.address), 1, txFirstName, txFirstNonce, value, 2, destination, - 'foo', owners.get(0), owners.get(1), + 'foo', 'secondConfirmationHash', owners.get(0), owners.get(1), ) // Test one transaction of second safe testTransactionFrom( transactions.get(secondSafe.address), 0, txSecondName, txSecondNonce, value, 2, destination, - '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + '0x03db1a8b26d08df23337e9276a36b474510f0023', 'confirmationHash', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), ) }) @@ -136,10 +146,12 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +159,9 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -158,12 +172,10 @@ describe('Transactions Suite', () => { it('checks the owner who creates the tx is an owner', async () => { // GIVEN - const txName = 'Buy butteries for project' - const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) + const buildConfirmationsTxFnc = () => buildConfirmationsFrom(owners, ownerName, 'confirmationHash') - expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) + expect(buildConfirmationsTxFnc).toThrow(/The creator of the tx is not an owner/) }) it('checks if safe has one owner transaction has been executed', async () => { @@ -172,9 +184,42 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) + + it('checks if safe has one owner transaction the confirmation list is correctly build', async () => { + const ownerName = 'foo' + const oneOwnerSafe = SafeFactory.oneOwnerSafe(ownerName) + const txName = 'Buy butteries for project' + const nonce: number = 10 + const tx = 'validTxHash' + const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) + storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + + // WHEN + const safeTransactions: Map> = loadSafeTransactions() + + // THEN + expect(safeTransactions.size).toBe(1) + + const transactions: List | typeof undefined = safeTransactions.get(oneOwnerSafe.address) + if (!transactions) throw new Error() + expect(transactions.count()).toBe(1) + + const batteriesTx: Transaction | typeof undefined = transactions.get(0) + if (!batteriesTx) throw new Error() + expect(batteriesTx.get('name')).toBe(txName) + + const txConfirmations = batteriesTx.confirmations + if (!txConfirmations) throw new Error() + expect(txConfirmations.count()).toBe(1) + + const firstConfirmation: Confirmation | typeof undefined = txConfirmations.get(0) + if (!firstConfirmation) throw new Error() + expect(firstConfirmation.get('hash')).toBe(EXECUTED_CONFIRMATION_HASH) + }) }) diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/Transactions/test/transactionsHelper.js index 6faef0f670..9b92df35b0 100644 --- a/src/routes/safe/component/Transactions/test/transactionsHelper.js +++ b/src/routes/safe/component/Transactions/test/transactionsHelper.js @@ -20,7 +20,8 @@ export const testSizeOfTransactions = (safeTxs: List | typeof undef export const testTransactionFrom = ( safeTxs: List | typeof undefined, pos: number, name: string, nonce: number, value: number, threshold: number, destination: string, - creator: string, firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, + creator: string, txHash: string, + firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, ) => { if (!safeTxs) { throw new Error() } const tx: Transaction | typeof undefined = safeTxs.get(pos) @@ -39,6 +40,7 @@ export const testTransactionFrom = ( expect(firstConfirmation.get('owner')).not.toBe(undefined) expect(firstConfirmation.get('owner')).toEqual(firstOwner) expect(firstConfirmation.get('status')).toBe(true) + expect(firstConfirmation.get('hash')).toBe(txHash) const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) if (!secondConfirmation) { throw new Error() } diff --git a/src/routes/safe/store/model/confirmation.js b/src/routes/safe/store/model/confirmation.js index 71fa560206..23fa65914a 100644 --- a/src/routes/safe/store/model/confirmation.js +++ b/src/routes/safe/store/model/confirmation.js @@ -6,11 +6,13 @@ import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' export type ConfirmationProps = { owner: Owner, status: boolean, // false: not confirmed, true: confirmed + hash: string, } export const makeConfirmation: RecordFactory = Record({ owner: makeOwner(), status: false, + hash: '', }) export type Confirmation = RecordOf From 38953cfcb7a1d47890bc84c8ece8bb4f92b9a9c5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 17:01:23 +0200 Subject: [PATCH 22/30] WA-238 Adjust createTransaction function to be executed correctly --- .../safe/component/Transactions/index.jsx | 9 +-- .../component/Transactions/transactions.js | 68 ++++++++++++++----- 2 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 2298820940..d72607d194 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import transaction, { storeTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -37,11 +37,8 @@ class Transactions extends React.Component { const nonce = Date.now() const destination = values[TX_DESTINATION_PARAM] const value = values[TX_VALUE_PARAM] - const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) - await storeTransaction( - values[TX_NAME_PARAM], nonce, destination, value, userAddress, - safe.get('owners'), tx.tx, safe.get('address'), safe.get('confirmations'), - ) + const name = values[TX_NAME_PARAM] + await createTransaction(safe, name, destination, value, nonce, userAddress) await sleep(1500) this.props.fetchTransactions() this.setState({ done: true }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 5db5a7cfd6..bff9ca1d74 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -6,22 +6,34 @@ import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/c import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' +import { type Safe } from '~/routes/safe/store/model/safe' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' export const TX_VALUE_PARAM = 'txValue' -const buildConfirmationsFrom = (owners: List, creator: string): List => { - if (!owners) { - throw new Error('This safe has no owners') - } +export const EXECUTED_CONFIRMATION_HASH = 'EXECUTED' + +// Exported for testing it, should not use it. Use #transactions fnc. +export const buildConfirmationsFrom = + (owners: List, creator: string, confirmationHash: string): List => { + if (!owners) { + throw new Error('This safe has no owners') + } - if (!owners.find((owner: Owner) => owner.get('address') === creator)) { - throw new Error('The creator of the tx is not an owner') + if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + throw new Error('The creator of the tx is not an owner') + } + + return owners.map((owner: Owner) => makeConfirmation({ + owner, + status: owner.get('address') === creator, + hash: owner.get('address') === creator ? confirmationHash : undefined, + })) } - return owners.map((owner: Owner) => makeConfirmation({ owner, status: owner.get('address') === creator })) -} +export const buildExecutedConfirmationFrom = (owners: List, creator: string): List => + buildConfirmationsFrom(owners, creator, EXECUTED_CONFIRMATION_HASH) export const storeTransaction = ( name: string, @@ -29,14 +41,12 @@ export const storeTransaction = ( destination: string, value: number, creator: string, - owners: List, + confirmations: List, tx: string, safeAddress: string, safeThreshold: number, ) => { - const confirmations: List = buildConfirmationsFrom(owners, creator) - - const notMinedWhenOneOwnerSafe = owners.count() === 1 && !tx + const notMinedWhenOneOwnerSafe = confirmations.count() === 1 && !tx if (notMinedWhenOneOwnerSafe) { throw new Error('The tx should be mined before storing it in safes with one owner') } @@ -58,15 +68,39 @@ export const storeTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } -const transactions = async (safeAddress: string, destination: string, value: number, nonce: number, user: string) => { +const hasOneOwner = (safe: Safe) => { + const owners = safe.get('owners') + if (!owners) { + throw new Error('Received a Safe without owners when creating a tx') + } + + return owners.count() === 1 +} + +export const createTransaction = async ( + safe: Safe, + txName: string, + txDestination: string, + txValue: number, + nonce: number, + user: string, +) => { const web3 = getWeb3() const GnosisSafe = await getGnosisSafeContract(web3) + const safeAddress = safe.get('address') const gnosisSafe = GnosisSafe.at(safeAddress) - const valueInWei = web3.toWei(value, 'ether') + const valueInWei = web3.toWei(txValue, 'ether') const CALL = 0 - return gnosisSafe.approveTransactionWithParameters(destination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) -} + if (hasOneOwner(safe)) { + const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash, safeAddress, safe.get('confirmations')) + } -export default transactions + const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash) + + return storeTransaction(txName, nonce, txDestination, txValue, user, confirmations, '', safeAddress, safe.get('confirmations')) +} From cbf29c10e0f2435b1ed6a8ce0975bdddfc5a1dc3 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 17:27:11 +0200 Subject: [PATCH 23/30] WA-238 Including only the txHash in the redux store of confirmations --- src/routes/safe/component/NoRights/index.jsx | 2 +- src/routes/safe/component/Transactions/transactions.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/safe/component/NoRights/index.jsx b/src/routes/safe/component/NoRights/index.jsx index 291fd4ba7d..a036c340e0 100644 --- a/src/routes/safe/component/NoRights/index.jsx +++ b/src/routes/safe/component/NoRights/index.jsx @@ -12,7 +12,7 @@ const NoRights = () => ( - You do not have rights to operate with this safe. Pleave visit the Safe List. + Impossible load Safe, check its address and ownership diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index bff9ca1d74..468d66b88f 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -96,11 +96,11 @@ export const createTransaction = async ( if (hasOneOwner(safe)) { const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) - return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash, safeAddress, safe.get('confirmations')) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash.tx, safeAddress, safe.get('confirmations')) } const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) - const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash) + const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash.tx) return storeTransaction(txName, nonce, txDestination, txValue, user, confirmations, '', safeAddress, safe.get('confirmations')) } From 3268d76dcb9f9828776efd4f5c036928ec217815 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 25 May 2018 10:21:42 +0200 Subject: [PATCH 24/30] WA-238 Rename transactions form component to AddTRansaction --- .../MultisigForm/MultisigForm.stories.js | 0 .../MultisigForm/index.jsx | 2 +- .../ReviewTx/index.jsx | 2 +- .../{Transactions => AddTransaction}/actions.js | 0 .../{Transactions => AddTransaction}/index.jsx | 0 .../{Transactions => AddTransaction}/selector.js | 0 .../test/transactions.builder.js | 0 .../test/transactions.test.js | 2 +- .../test/transactionsHelper.js | 0 .../{Transactions => AddTransaction}/transactions.js | 0 src/routes/safe/component/Safe/index.jsx | 10 ++++++---- 11 files changed, 9 insertions(+), 7 deletions(-) rename src/routes/safe/component/{Transactions => AddTransaction}/MultisigForm/MultisigForm.stories.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/MultisigForm/index.jsx (97%) rename src/routes/safe/component/{Transactions => AddTransaction}/ReviewTx/index.jsx (94%) rename src/routes/safe/component/{Transactions => AddTransaction}/actions.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/index.jsx (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/selector.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactions.builder.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactions.test.js (99%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactionsHelper.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/transactions.js (100%) diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js similarity index 100% rename from src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js rename to src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx similarity index 97% rename from src/routes/safe/component/Transactions/MultisigForm/index.jsx rename to src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index ed6f0371f1..66771bf885 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -5,7 +5,7 @@ import TextField from '~/components/forms/TextField' import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx similarity index 94% rename from src/routes/safe/component/Transactions/ReviewTx/index.jsx rename to src/routes/safe/component/AddTransaction/ReviewTx/index.jsx index b7bfb11098..e8e004d605 100644 --- a/src/routes/safe/component/Transactions/ReviewTx/index.jsx +++ b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx @@ -5,7 +5,7 @@ import Block from '~/components/layout/Block' import Bold from '~/components/layout/Bold' import Heading from '~/components/layout/Heading' import Paragraph from '~/components/layout/Paragraph' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' type FormProps = { values: Object, diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/AddTransaction/actions.js similarity index 100% rename from src/routes/safe/component/Transactions/actions.js rename to src/routes/safe/component/AddTransaction/actions.js diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx similarity index 100% rename from src/routes/safe/component/Transactions/index.jsx rename to src/routes/safe/component/AddTransaction/index.jsx diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/AddTransaction/selector.js similarity index 100% rename from src/routes/safe/component/Transactions/selector.js rename to src/routes/safe/component/AddTransaction/selector.js diff --git a/src/routes/safe/component/Transactions/test/transactions.builder.js b/src/routes/safe/component/AddTransaction/test/transactions.builder.js similarity index 100% rename from src/routes/safe/component/Transactions/test/transactions.builder.js rename to src/routes/safe/component/AddTransaction/test/transactions.builder.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/AddTransaction/test/transactions.test.js similarity index 99% rename from src/routes/safe/component/Transactions/test/transactions.test.js rename to src/routes/safe/component/AddTransaction/test/transactions.test.js index 783aa2e83d..c3a2894d88 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/AddTransaction/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/AddTransaction/test/transactionsHelper.js similarity index 100% rename from src/routes/safe/component/Transactions/test/transactionsHelper.js rename to src/routes/safe/component/AddTransaction/test/transactionsHelper.js diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/AddTransaction/transactions.js similarity index 100% rename from src/routes/safe/component/Transactions/transactions.js rename to src/routes/safe/component/AddTransaction/transactions.js diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 0943067b01..36f2a5c216 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,7 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' -import Transactions from '~/routes/safe/component/Transactions' +import AddTransaction from '~/routes/safe/component/AddTransaction' import Address from './Address' import Balance from './Balance' @@ -47,10 +47,12 @@ class GnoSafe extends React.PureComponent { onAddTx = () => { const { balance, safe } = this.props - this.setState({ component: }) + this.setState({ + component: , + }) } - onSeeTxs = () => { + onListTransactions = () => { const { safe } = this.props this.setState({ component: }) @@ -69,7 +71,7 @@ class GnoSafe extends React.PureComponent {
- + From 59bd50d55cab984c1edd234bf2aecb14eb87ea5a Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:36:34 +0200 Subject: [PATCH 25/30] WA-238 Deploy safe-contracts --- safe-contracts/build/contracts/CreateAndAddModules.json | 8 +++++++- safe-contracts/build/contracts/DailyLimitModule.json | 8 +++++++- .../build/contracts/DailyLimitModuleWithSignature.json | 8 +++++++- .../build/contracts/GnosisSafePersonalEdition.json | 8 +++++++- safe-contracts/build/contracts/GnosisSafeTeamEdition.json | 8 +++++++- safe-contracts/build/contracts/Migrations.json | 8 +++++++- safe-contracts/build/contracts/MultiSend.json | 8 +++++++- safe-contracts/build/contracts/ProxyFactory.json | 8 +++++++- safe-contracts/build/contracts/SocialRecoveryModule.json | 8 +++++++- safe-contracts/build/contracts/StateChannelModule.json | 8 +++++++- safe-contracts/build/contracts/WhitelistModule.json | 8 +++++++- 11 files changed, 77 insertions(+), 11 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index c7a8d05668..337a690bb9 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1270,8 +1270,14 @@ "links": {}, "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x7836f09d609e4e1c6bd42ca90377ee5a30ccba75", + "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.992Z" + "updatedAt": "2018-05-26T06:28:28.357Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 2642d89c58..b94a18c4c7 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -8005,8 +8005,14 @@ "links": {}, "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x1d916d0b2c243d732ee103132c7d85e8bda13beb", + "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.997Z" + "updatedAt": "2018-05-26T06:28:28.347Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index 3066be149d..60d71e9923 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -2560,8 +2560,14 @@ "links": {}, "address": "0x924ca341d09a83622d62128543b45530d43afa51", "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x7bd57821cda477c45be7999e6b08de00886999c9", + "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.991Z" + "updatedAt": "2018-05-26T06:28:28.345Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index d4ed103119..6f71f64c9c 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -8240,8 +8240,14 @@ "links": {}, "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x38c3ac4274e76c52a9b9f7f00ecf062750b1b4dc", + "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.972Z" + "updatedAt": "2018-05-26T06:28:28.339Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index ab782635f4..738fc446aa 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6688,8 +6688,14 @@ "links": {}, "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x29978b66e148e3e61ccff27e1f68784ed491fd82", + "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.969Z" + "updatedAt": "2018-05-26T06:28:28.342Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 0d472f6174..2f25e4e0a9 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1410,8 +1410,14 @@ "links": {}, "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x2a4404906523f58d56823eacf9f27d62348baff5", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.994Z" + "updatedAt": "2018-05-26T06:28:28.365Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index f0f87b651e..9d356f7786 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -366,8 +366,14 @@ "links": {}, "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x0f72f565275c8985a41a0ea8346420a61004771d", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.989Z" + "updatedAt": "2018-05-26T06:28:28.360Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index acb924b3d0..c909e2ffe5 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -1017,8 +1017,14 @@ "links": {}, "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x28ca055db09855f4bfefefd2177e33813f21fd8f", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.967Z" + "updatedAt": "2018-05-26T06:28:28.336Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index e36e344b24..f16deac049 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7054,8 +7054,14 @@ "links": {}, "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x2ee2d6323f9595963caece8280b6e6a81d4f9d49", + "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.987Z" + "updatedAt": "2018-05-26T06:28:28.363Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 6256c4bbe3..860bda1bf1 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5595,8 +5595,14 @@ "links": {}, "address": "0x79933939f70a2707380e371524050ecf6477da74", "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x07ef92f7b5ff64dc4d0757790281c23d54871b9a", + "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.977Z" + "updatedAt": "2018-05-26T06:28:28.355Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index 7bb8999069..9efae338b8 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4052,8 +4052,14 @@ "links": {}, "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0xa0a2c39cdfb6d7fb2f9b88990703f1b3c44ad5dc", + "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.983Z" + "updatedAt": "2018-05-26T06:28:28.359Z" } \ No newline at end of file From 48a58040516231f1eecf02810861e6a35ef69c46 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:36:59 +0200 Subject: [PATCH 26/30] WA-238 Hairline layout component --- src/components/layout/Hairline/index.js | 15 +++++++++++++++ src/components/layout/Hairline/index.stories.js | 14 ++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/components/layout/Hairline/index.js create mode 100644 src/components/layout/Hairline/index.stories.js diff --git a/src/components/layout/Hairline/index.js b/src/components/layout/Hairline/index.js new file mode 100644 index 0000000000..99c4912d35 --- /dev/null +++ b/src/components/layout/Hairline/index.js @@ -0,0 +1,15 @@ +// @flow +import * as React from 'react' + +const hairlineStyle = { + width: '100%', + height: '2px', + backgroundColor: '#d5d4d6', + margin: '20px 0px', +} + +const Hairline = () => ( +
+) + +export default Hairline diff --git a/src/components/layout/Hairline/index.stories.js b/src/components/layout/Hairline/index.stories.js new file mode 100644 index 0000000000..6dfd122d83 --- /dev/null +++ b/src/components/layout/Hairline/index.stories.js @@ -0,0 +1,14 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import { host } from 'storybook-host' +import Component from './index' + +storiesOf('Components', module) + .addDecorator(host({ + title: 'Hairline', + align: 'center', + height: 5, + width: '100%', + })) + .add('Hairline', () => ) From 8abc5144135b40a547c791e09817721547a1afea Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:56:17 +0200 Subject: [PATCH 27/30] WA-238 Transaction List component --- .../component/AddTransaction/transactions.js | 4 +- src/routes/safe/component/Safe/index.jsx | 5 +- .../Transactions/Collapsed/Confirmations.jsx | 79 +++++++++++++++++++ .../Transactions/Collapsed/index.jsx | 56 +++++++++++++ .../Transactions/NoTransactions/index.jsx | 32 ++++++++ .../Transactions/Transaction/index.jsx | 67 ++++++++++++++++ .../Transactions/Transaction/selector.js | 11 +++ .../safe/component/Transactions/index.jsx | 40 ++++++++++ .../safe/component/Transactions/selector.js | 13 +++ src/routes/safe/store/selectors/index.js | 51 +++++++++++- 10 files changed, 353 insertions(+), 5 deletions(-) create mode 100644 src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx create mode 100644 src/routes/safe/component/Transactions/Collapsed/index.jsx create mode 100644 src/routes/safe/component/Transactions/NoTransactions/index.jsx create mode 100644 src/routes/safe/component/Transactions/Transaction/index.jsx create mode 100644 src/routes/safe/component/Transactions/Transaction/selector.js create mode 100644 src/routes/safe/component/Transactions/index.jsx create mode 100644 src/routes/safe/component/Transactions/selector.js diff --git a/src/routes/safe/component/AddTransaction/transactions.js b/src/routes/safe/component/AddTransaction/transactions.js index 468d66b88f..e5ee15446e 100644 --- a/src/routes/safe/component/AddTransaction/transactions.js +++ b/src/routes/safe/component/AddTransaction/transactions.js @@ -94,9 +94,9 @@ export const createTransaction = async ( const CALL = 0 if (hasOneOwner(safe)) { - const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const txReceipt = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) - return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash.tx, safeAddress, safe.get('confirmations')) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txReceipt.tx, safeAddress, safe.get('confirmations')) } const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 36f2a5c216..6852dc1bbf 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,6 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' +import Transactions from '~/routes/safe/component/Transactions' import AddTransaction from '~/routes/safe/component/AddTransaction' import Address from './Address' @@ -55,7 +56,7 @@ class GnoSafe extends React.PureComponent { onListTransactions = () => { const { safe } = this.props - this.setState({ component: }) + this.setState({ component: }) } render() { @@ -81,7 +82,7 @@ class GnoSafe extends React.PureComponent { - + { component || Safe Icon } diff --git a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx new file mode 100644 index 0000000000..8822cffb98 --- /dev/null +++ b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx @@ -0,0 +1,79 @@ +// @flow +import * as React from 'react' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import { withStyles } from 'material-ui/styles' +import Collapse from 'material-ui/transitions/Collapse' +import ListItemText from '~/components/List/ListItemText' +import List, { ListItem, ListItemIcon } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Group from 'material-ui-icons/Group' +import Person from 'material-ui-icons/Person' +import ExpandLess from 'material-ui-icons/ExpandLess' +import ExpandMore from 'material-ui-icons/ExpandMore' +import { type WithStyles } from '~/theme/mui' +import { type Confirmation, type ConfirmationProps } from '~/routes/safe/store/model/confirmation' + +const styles = { + nested: { + paddingLeft: '40px', + }, +} + +type Props = Open & WithStyles & { + confirmations: List, +} + +const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { + const address = owner.get('address') + const text = status ? 'Confirmed' : 'Not confirmed' + const hashText = status ? `Confirmation hash: ${hash}` : undefined + + return ( + + + + + + + + + ) +} + +const Confirmaitons = openHoc(({ + open, toggle, confirmations, +}: Props) => { + const threshold = confirmations.count() + + return ( + + + + + + + + {open ? : } + + + + + {confirmations.map(confirmation => ( + + ))} + + + + ) +}) + +export default withStyles(styles)(Confirmaitons) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx new file mode 100644 index 0000000000..64f3cf9220 --- /dev/null +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -0,0 +1,56 @@ +// @flow +import * as React from 'react' +import { List as ImmutableList } from 'immutable' +import Row from '~/components/layout/Row' +import Col from '~/components/layout/Col' +import List, { ListItem, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Group from 'material-ui-icons/Group' +import MailOutline from 'material-ui-icons/MailOutline' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' +import Confirmations from './Confirmations' + +type Props = { + safeName: string, + confirmations: ImmutableList, + destination: string, + tx: string, +} + +const listStyle = { + width: '100%', +} + +class Collapsed extends React.PureComponent { + render() { + const { + confirmations, destination, safeName, tx, + } = this.props + + return ( + + + + + + + + + + + + + { tx && + + + + + } + + + + ) + } +} + +export default Collapsed diff --git a/src/routes/safe/component/Transactions/NoTransactions/index.jsx b/src/routes/safe/component/Transactions/NoTransactions/index.jsx new file mode 100644 index 0000000000..28e8e68a41 --- /dev/null +++ b/src/routes/safe/component/Transactions/NoTransactions/index.jsx @@ -0,0 +1,32 @@ +// @flow +import * as React from 'react' +import Bold from '~/components/layout/Bold' +import Button from '~/components/layout/Button' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph/index' + +type Props = { + onAddTx: () => void +} + +const NoRights = ({ onAddTx }: Props) => ( + + + + No transactions found for this safe + + + + + + +) + +export default NoRights diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx new file mode 100644 index 0000000000..f36012e8ca --- /dev/null +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -0,0 +1,67 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import ExpandLess from 'material-ui-icons/ExpandLess' +import ExpandMore from 'material-ui-icons/ExpandMore' +import ListItemText from '~/components/List/ListItemText' +import Row from '~/components/layout/Row' +import { ListItem, ListItemIcon } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import AttachMoney from 'material-ui-icons/AttachMoney' +import Atm from 'material-ui-icons/LocalAtm' +import DoneAll from 'material-ui-icons/DoneAll' +import Collapsed from '~/routes/safe/component/Transactions/Collapsed' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import Hairline from '~/components/layout/Hairline/index' +import selector, { type SelectorProps } from './selector' + +type Props = Open & SelectorProps & { + transaction: Transaction, + safeName: string, +} + +class GnoTransaction extends React.PureComponent { + render() { + const { + open, toggle, transaction, confirmed, safeName, + } = this.props + + const txHash = transaction.get('tx') + const confirmationText = txHash ? 'Already executed' : `${confirmed} of the ${transaction.get('threshold')} confirmations needed` + + return ( + + + + + + + + + + + + + + + + + {open ? : } + + + + { open && + } + + + ) + } +} + +export default connect(selector)(openHoc(GnoTransaction)) diff --git a/src/routes/safe/component/Transactions/Transaction/selector.js b/src/routes/safe/component/Transactions/Transaction/selector.js new file mode 100644 index 0000000000..14b4f3ad68 --- /dev/null +++ b/src/routes/safe/component/Transactions/Transaction/selector.js @@ -0,0 +1,11 @@ +// @flow +import { createStructuredSelector } from 'reselect' +import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' + +export type SelectorProps = { + confirmed: confirmationsTransactionSelector, +} + +export default createStructuredSelector({ + confirmed: confirmationsTransactionSelector, +}) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx new file mode 100644 index 0000000000..11c595f0c4 --- /dev/null +++ b/src/routes/safe/component/Transactions/index.jsx @@ -0,0 +1,40 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import NoTransactions from '~/routes/safe/component/Transactions/NoTransactions' +import GnoTransaction from '~/routes/safe/component/Transactions/Transaction' +import selector, { type SelectorProps } from './selector' + +type Props = SelectorProps & { + onAddTx: () => void, + safeName: string, +} + +class Transactions extends React.Component { + onConfirm = () => { + // eslint-disable-next-line + console.log("Confirming tx") + } + + onExecute = () => { + // eslint-disable-next-line + console.log("Confirming tx") + } + + render() { + const { transactions, onAddTx, safeName } = this.props + const hasTransactions = transactions.count() > 0 + + return ( + + { hasTransactions + ? transactions.map((tx: Transaction) => ) + : + } + + ) + } +} + +export default connect(selector)(Transactions) diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js new file mode 100644 index 0000000000..1941f7c5c1 --- /dev/null +++ b/src/routes/safe/component/Transactions/selector.js @@ -0,0 +1,13 @@ +// @flow +import { List } from 'immutable' +import { createStructuredSelector } from 'reselect' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' + +export type SelectorProps = { + transactions: List, +} + +export default createStructuredSelector({ + transactions: safeTransactionsSelector, +}) diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index e6bf40ebea..f89a7b8b46 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -1,5 +1,5 @@ // @flow -import { Map } from 'immutable' +import { Map, List } from 'immutable' import { type Match } from 'react-router-dom' import { createSelector, createStructuredSelector, type Selector } from 'reselect' import { type GlobalState } from '~/store/index' @@ -7,15 +7,64 @@ import { SAFE_PARAM_ADDRESS } from '~/routes/routes' import { type Safe } from '~/routes/safe/store/model/safe' import { safesMapSelector } from '~/routes/safeList/store/selectors' import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' +import { type State as TransactionsState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' export type RouterProps = { match: Match, } +export type SafeProps = { + safeAddress: string, +} + +type TransactionProps = { + transaction: Transaction, +} + +const safeAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress + const safeAddessSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' const balancesSelector = (state: GlobalState) => state[BALANCE_REDUCER_ID] +const transactionsSelector = (state: GlobalState): TransactionsState => state[TRANSACTIONS_REDUCER_ID] + +const oneTransactionSelector = (state: GlobalState, props: TransactionProps) => props.transaction + +export const safeTransactionsSelector: Selector> = createSelector( + transactionsSelector, + safeAddressSelector, + (transactions: TransactionsState, address: string): List => { + if (!transactions) { + return List([]) + } + + if (!address) { + return List([]) + } + + return transactions.get(address) || List([]) + }, +) + +export const confirmationsTransactionSelector = createSelector( + oneTransactionSelector, + (tx: Transaction) => { + if (!tx) { + return 0 + } + + const confirmations: List = tx.get('confirmations') + if (!confirmations) { + return 0 + } + + return confirmations.filter(((confirmation: Confirmation) => confirmation.get('status'))).count() + }, +) + export type SafeSelectorProps = Safe | typeof undefined export const safeSelector: Selector = createSelector( From 44ed495226b92410a2e72612329a0c3274c041c5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 12:01:08 +0200 Subject: [PATCH 28/30] WA-238 Adding tests of confirmations and transactions selectors --- src/routes/safe/store/selectors/index.js | 12 +- .../safe/store/test/confirmations.selector.js | 99 ++++++++++++++ src/routes/safe/store/test/safe.spec.js | 8 ++ .../safe/store/test/transactions.selector.js | 129 ++++++++++++++++++ 4 files changed, 242 insertions(+), 6 deletions(-) create mode 100644 src/routes/safe/store/test/confirmations.selector.js create mode 100644 src/routes/safe/store/test/transactions.selector.js diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index f89a7b8b46..07d58cc155 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -23,9 +23,9 @@ type TransactionProps = { transaction: Transaction, } -const safeAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress +const safePropAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress -const safeAddessSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' +const safeParamAddressSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' const balancesSelector = (state: GlobalState) => state[BALANCE_REDUCER_ID] @@ -35,7 +35,7 @@ const oneTransactionSelector = (state: GlobalState, props: TransactionProps) => export const safeTransactionsSelector: Selector> = createSelector( transactionsSelector, - safeAddressSelector, + safePropAddressSelector, (transactions: TransactionsState, address: string): List => { if (!transactions) { return List([]) @@ -49,7 +49,7 @@ export const safeTransactionsSelector: Selector = createSelector( oneTransactionSelector, (tx: Transaction) => { if (!tx) { @@ -69,7 +69,7 @@ export type SafeSelectorProps = Safe | typeof undefined export const safeSelector: Selector = createSelector( safesMapSelector, - safeAddessSelector, + safeParamAddressSelector, (safes: Map, address: string) => { if (!address) { return undefined @@ -81,7 +81,7 @@ export const safeSelector: Selector export const balanceSelector: Selector = createSelector( balancesSelector, - safeAddessSelector, + safeParamAddressSelector, (balances: Map, address: string) => { if (!address) { return '0' diff --git a/src/routes/safe/store/test/confirmations.selector.js b/src/routes/safe/store/test/confirmations.selector.js new file mode 100644 index 0000000000..3f1f924df0 --- /dev/null +++ b/src/routes/safe/store/test/confirmations.selector.js @@ -0,0 +1,99 @@ +// @flow +import { List, Map } from 'immutable' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' +import { makeProvider } from '~/wallets/store/model/provider' + +const grantedSelectorTests = () => { + describe('Safe Selector[confirmationsTransactionSelector]', () => { + it('returns 1 confirmation if safe has only one owner when tx is created', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + const threshold = confirmationsTransactionSelector(reduxStore, { transaction }) + + // THEN + expect(threshold).toBe(1) + }) + + it('returns 1 confirmation if safe has two or more owners when multisig tx is created', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const secondConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: false, + hash: '', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation, secondConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + const threshold = confirmationsTransactionSelector(reduxStore, { transaction }) + + // THEN + expect(threshold).toBe(1) + }) + + it('should return 0 confirmations if not transaction is sent as prop to component', () => { + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + // $FlowFixMe + const threshold = confirmationsTransactionSelector(reduxStore, { transaction: undefined }) + + // THEN + expect(threshold).toBe(0) + }) + }) +} + +export default grantedSelectorTests diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index c8e45daac0..3c431b4b83 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -5,6 +5,8 @@ import dailyLimitReducerTests from './dailyLimit.reducer' import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' import grantedSelectorTests from './granted.selector' +import confirmationsSelectorTests from './confirmations.selector' +import transactionsSelectorTests from './transactions.selector' describe('Safe Test suite', () => { // ACTIONS AND REDUCERS @@ -20,4 +22,10 @@ describe('Safe Test suite', () => { // GRANTED SELECTOR grantedSelectorTests() + + // CONFIRMATIONS SELECTOR + confirmationsSelectorTests() + + // TRANSACTIONS SELECTOR + transactionsSelectorTests() }) diff --git a/src/routes/safe/store/test/transactions.selector.js b/src/routes/safe/store/test/transactions.selector.js new file mode 100644 index 0000000000..5897ffd8fd --- /dev/null +++ b/src/routes/safe/store/test/transactions.selector.js @@ -0,0 +1,129 @@ +// @flow +import { List, Map } from 'immutable' +import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' +import { makeProvider } from '~/wallets/store/model/provider' +import { makeConfirmation, type Confirmation } from '~/routes/safe/store/model/confirmation' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' + +const grantedSelectorTests = () => { + describe('Safe Selector[safeTransactionsSelector]', () => { + it('should return empty list if no transactions in store', () => { + // GIVEN + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map(), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'fooAddress' }) + + // THEN + expect(transactions).toEqual(List([])) + }) + + it('should return empty list if transactions in store but not safe address in props', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactionsEmpty = safeTransactionsSelector(reduxStore, { safeAddress: '' }) + // $FlowFixMe + const transactionsUndefined = safeTransactionsSelector(reduxStore, { safeAddress: undefined }) + + // THEN + expect(transactionsEmpty).toEqual(List([])) + expect(transactionsUndefined).toEqual(List([])) + }) + + it('should return empty list if there are transactions belonging to different address', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'invented' }) + + // THEN + expect(transactions).toEqual(List([])) + }) + + it('should return transactions of safe', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'fooAddress' }) + + // THEN + expect(transactions).toEqual(List([transaction])) + }) + }) +} + +export default grantedSelectorTests From 5085a18fa76b991c80a6045235b2a6362da7d05f Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 13:35:17 +0200 Subject: [PATCH 29/30] WA-238 Adding DOM test simulating execution of tx when safe has only 1 owner --- .../safe/component/AddTransaction/index.jsx | 4 +- src/routes/safe/component/Safe.txs.test.js | 100 ++++++++++++++++++ .../{Safe.test.js => Safe.withdrawn.test.js} | 0 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/routes/safe/component/Safe.txs.test.js rename src/routes/safe/component/{Safe.test.js => Safe.withdrawn.test.js} (100%) diff --git a/src/routes/safe/component/AddTransaction/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx index d72607d194..1fe11a5750 100644 --- a/src/routes/safe/component/AddTransaction/index.jsx +++ b/src/routes/safe/component/AddTransaction/index.jsx @@ -26,7 +26,7 @@ type State = { export const SEE_TXS_BUTTON_TEXT = 'VISIT TXS' -class Transactions extends React.Component { +class AddTransaction extends React.Component { state = { done: false, } @@ -81,4 +81,4 @@ class Transactions extends React.Component { } } -export default connect(selector, actions)(Transactions) +export default connect(selector, actions)(AddTransaction) diff --git a/src/routes/safe/component/Safe.txs.test.js b/src/routes/safe/component/Safe.txs.test.js new file mode 100644 index 0000000000..5cbc1a16ab --- /dev/null +++ b/src/routes/safe/component/Safe.txs.test.js @@ -0,0 +1,100 @@ +// @flow +import * as React from 'react' +import TestUtils from 'react-dom/test-utils' +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import Button from '~/components/layout/Button' +import { aNewStore, history } from '~/store' +import { addEtherTo } from '~/test/addEtherTo' +import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import SafeView from '~/routes/safe/component/Safe' +import AppRoutes from '~/routes' +import AddTransactionComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/AddTransaction' +import TransactionsComponent from '~/routes/safe/component/Transactions' +import TransactionComponent from '~/routes/safe/component/Transactions/Transaction' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { sleep } from '~/utils/timer' +import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' + +describe('React DOM TESTS > Withdrawn funds from safe', () => { + let SafeDom + let store + let address + beforeEach(async () => { + // create store + store = aNewStore() + // deploy safe updating store + address = await aDeployedSafe(store) + // navigate to SAFE route + history.push(`${SAFELIST_ADDRESS}/${address}`) + SafeDom = TestUtils.renderIntoDocument(( + + + + + + )) + }) + + it('should execute one transaction if safe has only one owner', async () => { + // add funds to safe + await addEtherTo(address, '0.1') + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + + // $FlowFixMe + const buttons = TestUtils.scryRenderedComponentsWithType(Safe, Button) + const addTxButton = buttons[1] + expect(addTxButton.props.children).toEqual(ADD_MULTISIG_BUTTON_TEXT) + await sleep(1800) // Give time to enable Add button + TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(addTxButton, 'button')[0]) + + const AddTransaction = TestUtils.findRenderedComponentWithType(SafeDom, AddTransactionComponent) + + // $FlowFixMe + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTransaction, 'input') + const name = inputs[0] + const destination = inputs[1] + const amountInEth = inputs[2] + TestUtils.Simulate.change(name, { target: { value: 'Buying betteries' } }) + TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) + TestUtils.Simulate.change(destination, { target: { value: store.getState().providers.account } }) + + // $FlowFixMe + const form = TestUtils.findRenderedDOMComponentWithTag(AddTransaction, 'form') + + TestUtils.Simulate.submit(form) // fill the form + TestUtils.Simulate.submit(form) // confirming data + await sleep(4000) + + const safeBalance = await getBalanceInEtherOf(address) + expect(safeBalance).toBe('0.09') + + // $FlowFixMe + const addTransactionButtons = TestUtils.scryRenderedComponentsWithType(AddTransaction, Button) + expect(addTransactionButtons.length).toBe(1) + const visitTxsButton = addTransactionButtons[0] + expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) + + // NOW it is time to check the just executed transaction + TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(visitTxsButton, 'button')[0]) + + const Transactions = TestUtils.findRenderedComponentWithType(SafeDom, TransactionsComponent) + if (!Transactions) throw new Error() + const Transaction = TestUtils.findRenderedComponentWithType(Transactions, TransactionComponent) + if (!Transaction) throw new Error() + + const paragraphs = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') + expect(paragraphs[2].innerHTML).toBe('Already executed') + TestUtils.Simulate.click(paragraphs[2]) // expanded + await sleep(1000) // Time to expand + const paragraphsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') + const txHashParagraph = paragraphsExpanded[paragraphsExpanded.length - 1] + + const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) + const batteryTx = transactions.get(0) + if (!batteryTx) throw new Error() + expect(txHashParagraph.innerHTML).toBe(batteryTx.get('tx')) + }) +}) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.withdrawn.test.js similarity index 100% rename from src/routes/safe/component/Safe.test.js rename to src/routes/safe/component/Safe.withdrawn.test.js From 0c4708b3758b6867f4b6402c2827c86bfd087a89 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 13:39:44 +0200 Subject: [PATCH 30/30] WA-238 Fix warning text boolean prop --- src/routes/safe/component/Transactions/Collapsed/index.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index 64f3cf9220..f81ede1dd6 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -3,7 +3,8 @@ import * as React from 'react' import { List as ImmutableList } from 'immutable' import Row from '~/components/layout/Row' import Col from '~/components/layout/Col' -import List, { ListItem, ListItemText } from 'material-ui/List' +import List, { ListItem } from 'material-ui/List' +import ListItemText from '~/components/List/ListItemText' import Avatar from 'material-ui/Avatar' import Group from 'material-ui-icons/Group' import MailOutline from 'material-ui-icons/MailOutline'