From 4a333c09be93be2d2b8170540015ea7236744aa5 Mon Sep 17 00:00:00 2001 From: "moxey.eth" Date: Tue, 10 Oct 2023 16:48:35 +1100 Subject: [PATCH] chore: polish --- bun.lockb | Bin 307807 -> 307807 bytes src/actions/getAccountTokens.ts | 55 + src/actions/index.ts | 1 + src/app.tsx | 18 +- src/hooks/useAccountTokens.ts | 46 + src/hooks/useGetLogs.ts | 43 +- src/hooks/useImportTransferredTokens.ts | 49 - src/hooks/useNetworkStatus.ts | 33 +- src/hooks/usePendingBlock.ts | 43 +- src/screens/account-details.tsx | 82 +- src/zustand/network.ts | 10 +- src/zustand/tokens.ts | 93 +- test/contracts/foundry.toml | 2 + test/contracts/generated.ts | 26978 +++++++++++++++++++++- test/contracts/src/MockERC20.sol | 20 + test/contracts/src/MockERC721.sol | 35 + test/dapp/App.tsx | 159 +- 17 files changed, 26878 insertions(+), 789 deletions(-) create mode 100644 src/actions/getAccountTokens.ts create mode 100644 src/hooks/useAccountTokens.ts delete mode 100644 src/hooks/useImportTransferredTokens.ts create mode 100644 test/contracts/src/MockERC20.sol create mode 100644 test/contracts/src/MockERC721.sol diff --git a/bun.lockb b/bun.lockb index c21304a9fbc169a9c0164b5bf0f52db9daa336e4..50f41f38318362ad5c80b65bfcfd1e9fa45b859f 100755 GIT binary patch delta 11627 zcmeHNU1%It6h4_Im9%L(t*OL6+J}Hz+FchaR4lT-SQND>O`@R{li8i!PO?9CH)&J< z&VmmWUm66tZz^JhLWC%Vwh(b2#3wBQQxK(8Ay^-L@<~O|b7t;lb~l^tW;1i|ivxS^ z^3BZs?)lD{d(Yh6TPwS7t?ZtS?E3(}|MlOwXnNxJ+#luK`Hx?IzF0_)yt2O>eKJ4) z%qN-8UwAh5@H-#ozu14*Rv5c;(AXC#Q?=h|k^5Py_XtIC9A77x6q5hC?zsZWTFT_-MR<26-+|zxqvZL zLDGZ+E53Q22kc!FV#&+=illBh7*y_Yt;4?ldQ>2O)x-uVkSG@IVgewGcLQt#C=up^ z3Ncsz)zK&h{=2Ab@kULe*)#U!`dX|$HXZfOgPk9PR`w& zpsxXAr7*B~$j~cz=qocG%7Oug9%jZX% z$1pwZBw75cFZ!>cAz`S3qzQ*Cv|915lN904);eW2h4F(HXonl@536ImDNi;?EP1^` zO9OF<#!KNO{dLNJ6{{XG9V&4C1)tT_XN#(0s~3iJ9r<6`YS1CSTj*#ZmSM*h;}nwo z(B;Z67LU;{Lgiyd-{Ds=R;jdh}qsJ(u&!>F~!ml z^|Cxfy{t8+SU65+FCRBd>br|)^59lYK78N}GwaM?G*6atX%iVnt z*GG-}#PTRjM+>&miRnz<;)n9fSpfP0r^MeCVyKjuD<>-7fLqVul;?3R*gD3u>v$qx zpvfApzwcEd^mPp;#!k{~nmkD}<3^1s22atwL#OE8|4q;uc$L|B(wcOrD*Ng)f5BCR zVW`BMpJ$yZn{)E!f?tIB7}fJ!nTc;LTDn&(N-{;p6!S^S>xCpyvN5NMiF_`VnEd6M zSNMs4k~E|~o6eIl#dEgNe>m%8U1zGx{mM@wZ!Y@LtH;FBDDzMk;xhNRjxoiNlo7{! zNiHsIoLthLkz2OyVs|LOR_iYgku1uv5vUMLdAq4i%EmwjBYsX(I9AdWj@FEcJaPBZ zhg&KqqIr5~`A~%Iy#uj$+A$(x%ps4~Gqh8k&pk#%uDsXqKOb*=2e60ot%9*jAz|2* zgp+l``%f2GOa6Km940qVgX_>+tXuAHXPtLqW|C%^*+~jndj`920Ng{ttDcg2e)P24 zLoH7v9MF)kky0om;-+QXuWBt&vFLa!z2)TH1!V3wKe-iQJ8Fn8#LpP?*>WX*rgQI8 F{{cpyn`Qt2 delta 2372 zcmccrMCkq#p$U2l4>h0dJDq+u<^3@ZpP2?ZCj%eIZ1}F|az-n(E4^!li2O!BFT=?X zOcW+hFyxqg;4x?ONyGM&hK$=!8Z!AaK_yrw8L>z(k&rWwM~R zK9UGXlvbDrQVwx)QN(`wt&Q14Fy1KmLL>)TyEzC zsdWj)p>~2HD@gtcsyx`PmJlX^=?x)FEYNHY$sTD42OJ1t(g4bVJUd+_6vF~=lG_jp zRs$&}{u{DR*9Zd&P$v!I@-ezNIK5qoL^xa}3d6C;dU(O5I2Kvds0QAMh#xIxk4kj7*KufRYl^9v|xR?3OGHO~|H$vt~^; v!JGxo2~Toxm<1~fl5ohA7N5xO!_J1<_oV>CKHhehLM9+)-tJP!BJBtOS$M<& diff --git a/src/actions/getAccountTokens.ts b/src/actions/getAccountTokens.ts new file mode 100644 index 0000000..fda733a --- /dev/null +++ b/src/actions/getAccountTokens.ts @@ -0,0 +1,55 @@ +import { type Address, parseAbiItem } from 'abitype' +import type { GetLogsParameters } from 'viem' + +import { getLogsQueryOptions } from '~/hooks/useGetLogs' +import { queryClient } from '~/react-query' +import type { Client } from '~/viem' + +export async function getAccountTokens( + client: Client, + { + address, + fromBlock, + toBlock, + }: { + address: Address + fromBlock: GetLogsParameters['fromBlock'] + toBlock: GetLogsParameters['toBlock'] + }, +) { + const [transfersFrom, transfersTo] = await Promise.all([ + queryClient.fetchQuery( + getLogsQueryOptions(client, { + event: parseAbiItem( + 'event Transfer(address indexed from, address indexed to, uint256)', + ), + args: { + from: address, + }, + fromBlock, + toBlock, + }), + ), + queryClient.fetchQuery( + getLogsQueryOptions(client, { + event: parseAbiItem( + 'event Transfer(address indexed from, address indexed to, uint256)', + ), + args: { + to: address, + }, + fromBlock, + toBlock, + }), + ), + ]) + + // TODO: Check if log addresses are ERC20 tokens. + + return [ + ...new Set([ + ...(transfersFrom?.map((t) => t.address) || []), + ...(transfersTo?.map((t) => t.address) || []), + ]), + ] +} diff --git a/src/actions/index.ts b/src/actions/index.ts index 8e67760..cd9224b 100644 --- a/src/actions/index.ts +++ b/src/actions/index.ts @@ -1,2 +1,3 @@ export { connect } from './connect' export { disconnect } from './disconnect' +export { getAccountTokens } from './getAccountTokens' diff --git a/src/app.tsx b/src/app.tsx index e4f4bf6..280398e 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -25,11 +25,9 @@ import { useAccountStore, useNetworkStore, useSessionsStore, - useTokensStore, } from '~/zustand' import { type AppMeta, AppMetaContext } from './contexts' -import { useImportTransferredTokens } from './hooks/useImportTransferredTokens' import Layout from './screens/_layout' import AccountDetails from './screens/account-details' import BlockConfig from './screens/block-config' @@ -128,7 +126,6 @@ export function init({ type = 'standalone' }: { type?: AppMeta['type'] } = {}) { - @@ -200,19 +197,6 @@ function SyncBlockNumber() { return null } -/** Keeps Transfer event imported tokens in sync. */ -function SyncTransferredTokens() { - const { account } = useAccountStore() - const { addToken } = useTokensStore() - const tokens = useImportTransferredTokens() - if (account?.address) { - tokens.forEach((addr) => { - addToken(addr, account.address) - }) - } - return null -} - /** Keeps accounts in sync with network. */ function SyncJsonRpcAccounts() { const { data: chainId } = useNetworkStatus() @@ -238,7 +222,7 @@ function SyncNetwork() { const prevListening = usePrevious(listening) useEffect(() => { // Reset stale queries that are dependent on the client when node comes back online. - if (!prevListening && listening) { + if (prevListening === false && listening) { queryClient.removeQueries({ predicate(query) { return query.queryKey.includes(client.key) diff --git a/src/hooks/useAccountTokens.ts b/src/hooks/useAccountTokens.ts new file mode 100644 index 0000000..6e8e2bb --- /dev/null +++ b/src/hooks/useAccountTokens.ts @@ -0,0 +1,46 @@ +import { queryOptions, useQuery } from '@tanstack/react-query' +import { type Address, stringify } from 'viem' + +import { getAccountTokens } from '~/actions' +import { createQueryKey } from '~/react-query' +import type { Client } from '~/viem' +import { useNetworkStore, useTokensStore } from '~/zustand' + +import { useClient } from './useClient' + +type UseAccountTokensParameters = { + address?: Address +} + +export const getAccountTokensQueryKey = createQueryKey< + 'account-tokens', + [key: Client['key'], address: Address | undefined, args: string] +>('account-tokens') + +export function useAccountTokensQueryOptions(args: UseAccountTokensParameters) { + const { address } = args + + const { syncTokens } = useTokensStore() + const { network } = useNetworkStore() + const client = useClient() + + return queryOptions({ + enabled: Boolean(address && network.forkBlockNumber), + queryKey: getAccountTokensQueryKey([client.key, address, stringify(args)]), + async queryFn() { + if (!address) throw new Error('address is required') + const tokens = await getAccountTokens(client, { + address, + fromBlock: network.forkBlockNumber, + toBlock: 'latest', + }) + syncTokens(tokens, address) + return tokens + }, + }) +} + +export function useAccountTokens(args: UseAccountTokensParameters) { + const queryOptions = useAccountTokensQueryOptions(args) + return useQuery(queryOptions) +} diff --git a/src/hooks/useGetLogs.ts b/src/hooks/useGetLogs.ts index 2192204..b77f67d 100644 --- a/src/hooks/useGetLogs.ts +++ b/src/hooks/useGetLogs.ts @@ -2,7 +2,6 @@ import { queryOptions, useQuery } from '@tanstack/react-query' import { type BlockNumber, type BlockTag, - type Client, type GetLogsParameters, stringify, } from 'viem' @@ -10,50 +9,66 @@ import { import { createQueryKey } from '~/react-query' import type { AbiEvent } from 'abitype' +import type { Client } from '../viem' import { useClient } from './useClient' type UseLogsParameters< TAbiEvent extends AbiEvent, TFromBlock extends BlockNumber | BlockTag, TToBlock extends BlockNumber | BlockTag, -> = GetLogsParameters +> = GetLogsParameters< + TAbiEvent, + TAbiEvent[], + undefined, + TFromBlock, + TToBlock +> & { + enabled?: boolean +} export const getLogsQueryKey = createQueryKey< 'get-logs', [key: Client['key'], args: string] >('get-logs') -export function useGetLogsQueryOptions< +export function getLogsQueryOptions< TAbiEvent extends AbiEvent, TFromBlock extends BlockNumber | BlockTag, TToBlock extends BlockNumber | BlockTag, ->(parameters: UseLogsParameters) { - const client = useClient() +>(client: Client, args: UseLogsParameters) { + const { enabled = true, fromBlock, toBlock } = args return queryOptions({ - enabled: Boolean(parameters), + enabled, gcTime: - typeof parameters.fromBlock === 'bigint' && - typeof parameters.toBlock === 'bigint' + typeof fromBlock === 'bigint' && typeof toBlock === 'bigint' ? Infinity : undefined, staleTime: - typeof parameters.fromBlock === 'bigint' && - typeof parameters.toBlock === 'bigint' + typeof fromBlock === 'bigint' && typeof toBlock === 'bigint' ? Infinity : undefined, - queryKey: getLogsQueryKey([client.key, stringify(parameters)]), + queryKey: getLogsQueryKey([client.key, stringify(args)]), async queryFn() { - return await client.getLogs(parameters) + return await client.getLogs(args) }, }) } +export function useGetLogsQueryOptions< + TAbiEvent extends AbiEvent, + TFromBlock extends BlockNumber | BlockTag, + TToBlock extends BlockNumber | BlockTag, +>(args: UseLogsParameters) { + const client = useClient() + return getLogsQueryOptions(client, args) +} + export function useGetLogs< TAbiEvent extends AbiEvent, TFromBlock extends BlockNumber | BlockTag, TToBlock extends BlockNumber | BlockTag, ->(parameters: UseLogsParameters) { - const queryOptions = useGetLogsQueryOptions(parameters) +>(args: UseLogsParameters) { + const queryOptions = useGetLogsQueryOptions(args) return useQuery(queryOptions) } diff --git a/src/hooks/useImportTransferredTokens.ts b/src/hooks/useImportTransferredTokens.ts deleted file mode 100644 index 24b65bb..0000000 --- a/src/hooks/useImportTransferredTokens.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { parseAbiItem } from 'abitype' -import type { BlockTag } from 'viem' -import { useAccountStore, useNetworkStore } from '~/zustand' -import { useGetLogs } from './useGetLogs' - -type UseImportTransferredTokensParameters = { - fromBlock?: bigint | BlockTag - toBlock?: bigint | BlockTag -} - -export function useImportTransferredTokens({ - fromBlock, - toBlock, -}: UseImportTransferredTokensParameters = {}) { - const { account } = useAccountStore() - const { network } = useNetworkStore() - - const { data: transfersFrom } = useGetLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - from: account?.address, - }, - fromBlock: fromBlock || network.forkBlockNumber, - toBlock: toBlock || 'latest', - }) - const { data: transfersTo } = useGetLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - to: account?.address, - }, - fromBlock: fromBlock || network.forkBlockNumber, - toBlock: toBlock || 'latest', - }) - - if (account?.address) { - return [ - ...new Set([ - ...(transfersFrom?.map((t) => t.address) || []), - ...(transfersTo?.map((t) => t.address) || []), - ]), - ] - } - - return [] -} diff --git a/src/hooks/useNetworkStatus.ts b/src/hooks/useNetworkStatus.ts index 6868ae8..2c745dd 100644 --- a/src/hooks/useNetworkStatus.ts +++ b/src/hooks/useNetworkStatus.ts @@ -36,14 +36,33 @@ export function useNetworkStatus({ try { const chainId = await client.getChainId() const network = networks.find((x) => x.rpcUrl === client.key) - if ( - network && - chainId && - network.rpcUrl === client.key && - network.chainId !== chainId - ) { - upsertNetwork({ rpcUrl, network: { chainId } }) + + if (network) { + let updatedNetwork = {} + + // If chain becomes out of sync, update to the new chain. + if ( + chainId && + network.rpcUrl === client.key && + network.chainId !== chainId + ) + updatedNetwork = { ...updatedNetwork, chainId } + + // If there is no fork block number, update to the current block number. + if (typeof network.forkBlockNumber !== 'bigint') { + updatedNetwork = { + ...updatedNetwork, + forkBlockNumber: await client.getBlockNumber(), + } + } + + if (Object.keys(updatedNetwork).length > 0) + upsertNetwork({ + network: updatedNetwork, + rpcUrl: client.key, + }) } + return chainId } catch { return false diff --git a/src/hooks/usePendingBlock.ts b/src/hooks/usePendingBlock.ts index fa2fecf..e17b315 100644 --- a/src/hooks/usePendingBlock.ts +++ b/src/hooks/usePendingBlock.ts @@ -1,13 +1,14 @@ import { type InfiniteData, useQuery } from '@tanstack/react-query' -import { type Block, type Client, type Transaction, parseAbiItem } from 'viem' +import { type Block, type Client, type Transaction } from 'viem' import { createQueryKey, queryClient, updateInfiniteQueryData, } from '~/react-query' -import { useAccountStore, useNetworkStore, useTokensStore } from '~/zustand' +import { useNetworkStore } from '~/zustand' +import { getAccountTokensQueryKey } from './useAccountTokens' import { getBalanceQueryKey } from './useBalance' import { getBlockQueryKey } from './useBlock' import { useClient } from './useClient' @@ -31,8 +32,6 @@ export function usePendingBlockQueryOptions({ }: UsePendingBlockParameters = {}) { const { network } = useNetworkStore() const { data: chainId } = useNetworkStatus() - const { addToken } = useTokensStore() - const { account } = useAccountStore() const client = useClient() return { @@ -55,39 +54,9 @@ export function usePendingBlockQueryOptions({ ) return prevBlock || null - // Import any tokens from Transfer event - if (account && prevBlock.number) { - const transfersFrom = await client.getLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - from: account.address, - }, - fromBlock: prevBlock.number, - toBlock: 'latest', - }) - const transfersTo = await client.getLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - to: account.address, - }, - fromBlock: prevBlock.number, - toBlock: 'latest', - }) - ;[ - ...new Set([ - ...(transfersFrom?.map((t) => t.address) || []), - ...(transfersTo?.map((t) => t.address) || []), - ]), - ].forEach((addr) => { - console.log(addr) - addToken(addr, account.address) - }) - } - + queryClient.invalidateQueries({ + queryKey: getAccountTokensQueryKey([client.key]), + }) queryClient.invalidateQueries({ queryKey: getBalanceQueryKey([client.key]), }) diff --git a/src/screens/account-details.tsx b/src/screens/account-details.tsx index 2c61c0d..9c80c37 100644 --- a/src/screens/account-details.tsx +++ b/src/screens/account-details.tsx @@ -8,7 +8,6 @@ import { BaseError, formatUnits, isAddress, - parseAbiItem, parseUnits, } from 'viem' @@ -30,11 +29,10 @@ import { Stack, Text, } from '~/design-system' +import { useAccountTokens } from '~/hooks/useAccountTokens' import { useErc20Balance } from '~/hooks/useErc20Balance' import { useErc20Metadata } from '~/hooks/useErc20Metadata' -import { useGetLogs } from '~/hooks/useGetLogs' import { useSetErc20Balance } from '~/hooks/useSetErc20Balance' -import { useNetworkStore } from '~/zustand' import { useTokensStore } from '~/zustand/tokens' export default function AccountDetails() { @@ -91,47 +89,10 @@ export default function AccountDetails() { ) } -function useImportTransferredTokens() { - const { address: accountAddress } = useParams() - const { addToken } = useTokensStore() - const { network } = useNetworkStore() - - const { data: transfersFrom } = useGetLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - from: accountAddress as Address, - }, - fromBlock: network.forkBlockNumber, - toBlock: 'latest', - }) - const { data: transfersTo } = useGetLogs({ - event: parseAbiItem( - 'event Transfer(address indexed from, address indexed to, uint256)', - ), - args: { - to: accountAddress as Address, - }, - fromBlock: network.forkBlockNumber, - toBlock: 'latest', - }) - - if (accountAddress) { - ;[ - ...new Set([ - ...(transfersFrom?.map((t) => t.address) || []), - ...(transfersTo?.map((t) => t.address) || []), - ]), - ].forEach((addr) => { - addToken(addr, accountAddress as Address) - }) - } -} - function Tokens({ accountAddress }: { accountAddress: Address }) { + useAccountTokens({ address: accountAddress }) + const { tokens } = useTokensStore() - useImportTransferredTokens() if (!accountAddress) return null return ( @@ -159,13 +120,15 @@ function Tokens({ accountAddress }: { accountAddress: Address }) { {/* TODO: Handle empty state. */} - {tokens[accountAddress]?.map((tokenAddress) => ( - - ))} + {tokens[accountAddress]?.map(({ address: tokenAddress, removed }) => + !removed ? ( + + ) : null, + )} ) } @@ -227,12 +190,18 @@ function TokenRow({ }) useEffect(() => { - if (balanceError) toast.error((balanceError as BaseError).shortMessage) - }, [balanceError]) + if (balanceError) { + toast.error((balanceError as BaseError).shortMessage) + removeToken(tokenAddress, accountAddress) + } + }, [balanceError, tokenAddress, accountAddress, removeToken]) useEffect(() => { - if (metadataError) toast.error((metadataError as BaseError).shortMessage) - }, [metadataError]) + if (metadataError) { + toast.error((metadataError as BaseError).shortMessage) + removeToken(tokenAddress, accountAddress) + } + }, [metadataError, tokenAddress, accountAddress, removeToken]) const isLoading = !data const { name, symbol, decimals } = data || {} @@ -258,7 +227,7 @@ function TokenRow({ - + {tokenAddress} @@ -267,7 +236,10 @@ function TokenRow({ {symbol && ( - + ( })() const forkBlockNumber = await (async () => { if (network_.forkBlockNumber) return network_.forkBlockNumber + + const network = get().networks.find( + (network) => network.rpcUrl === rpcUrl, + ) + if (network?.forkBlockNumber) return network.forkBlockNumber + try { return await getClient({ rpcUrl, diff --git a/src/zustand/tokens.ts b/src/zustand/tokens.ts index feed8ef..7c5ef8d 100644 --- a/src/zustand/tokens.ts +++ b/src/zustand/tokens.ts @@ -1,25 +1,36 @@ +import { uniqBy } from 'remeda' import type { Address } from 'viem' import { useSyncExternalStoreWithTracked } from '~/hooks/useSyncExternalStoreWithTracked' import { createStore } from './utils' +type Token = { + address: Address + removed: boolean +} + export type TokensState = { - tokens: Record + tokens: Record } export type TokensActions = { addToken: (tokenAddress: Address, address: Address) => void removeToken: (tokenAddress: Address, address: Address) => void + syncTokens: (tokenAddresses: Address[], address: Address) => void } export type TokensStore = TokensState & TokensActions export const tokensStore = createStore( - (set, get) => ({ + (set) => ({ tokens: {}, - addToken(tokenAddress: Address, address: Address) { - if ((get().tokens[address] || []).find((token) => token === tokenAddress)) - return + addToken(tokenAddress: Address, accountAddress: Address) { set((state) => { const tokens = { ...state.tokens } - tokens[address] = [...(state.tokens[address] || []), tokenAddress] + tokens[accountAddress] = uniqBy( + [ + { address: tokenAddress, removed: false }, + ...(state.tokens[accountAddress] || []), + ], + (x) => x.address, + ) return { ...state, @@ -27,11 +38,18 @@ export const tokensStore = createStore( } }) }, - removeToken(tokenAddress: Address, address: Address) { + removeToken(tokenAddress: Address, accountAddress: Address) { set((state) => { const tokens = { ...state.tokens } - tokens[address] = tokens[address].filter( - (token) => token !== tokenAddress, + tokens[accountAddress] = (state.tokens[accountAddress] || []).map( + (token) => { + if (token.address === tokenAddress) + return { + ...token, + removed: true, + } + return token + }, ) return { ...state, @@ -39,14 +57,69 @@ export const tokensStore = createStore( } }) }, + syncTokens(tokenAddresses: Address[], accountAddress: Address) { + set((state) => { + const tokens = { ...state.tokens } + + for (const tokenAddress of tokenAddresses) { + const exists = (tokens[accountAddress] || []).some( + (x) => x.address === tokenAddress, + ) + if (!exists) + tokens[accountAddress] = [ + ...(tokens[accountAddress] || []), + { + address: tokenAddress, + removed: false, + }, + ] + } + + return { + ...state, + tokens, + } + }) + }, }), { persist: { name: 'tokens', - version: 0, + migrate, + version: 1, }, }, ) export const useTokensStore = () => useSyncExternalStoreWithTracked(tokensStore.subscribe, tokensStore.getState) + +/////////////////////////////////////////////////////////////////////////////////////// +// Migrations + +export type TokensState_v1 = TokensState + +export type TokensState_v0 = { + tokens: Record +} + +function migrate(persistedState: unknown, version: number): TokensStore { + switch (version) { + case 0: { + const state = persistedState as TokensState_v0 + return { + tokens: Object.fromEntries( + Object.entries(state.tokens).map(([address, tokenAddresses]) => [ + address, + tokenAddresses.map((tokenAddress) => ({ + address: tokenAddress, + removed: false, + })), + ]), + ), + } as TokensState_v1 as TokensStore + } + default: + return persistedState as TokensStore + } +} diff --git a/test/contracts/foundry.toml b/test/contracts/foundry.toml index c020520..4da05c5 100644 --- a/test/contracts/foundry.toml +++ b/test/contracts/foundry.toml @@ -1,9 +1,11 @@ [profile.default] src = 'src' solc_version = "0.8.18" +libs = ['../../node_modules'] ignored_error_codes = ["license", "unused-param", "unused-var"] + [fmt] line_length = 80 diff --git a/test/contracts/generated.ts b/test/contracts/generated.ts index 0d687fe..917ffbc 100644 --- a/test/contracts/generated.ts +++ b/test/contracts/generated.ts @@ -1,656 +1,26486 @@ +export const ERC20 = { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)\",\"details\":\"Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Modern and gas efficient ERC20 + EIP-2612 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"../../node_modules/solmate/src/tokens/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"../../node_modules/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "permit" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "../../node_modules/solmate/src/tokens/ERC20.sol": "ERC20" + }, + "libraries": {} + }, + "sources": { + "../../node_modules/solmate/src/tokens/ERC20.sol": { + "keccak256": "0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10", + "urls": [ + "bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35", + "dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97" + ], + "license": "AGPL-3.0-only" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "../../node_modules/solmate/src/tokens/ERC20.sol", + "id": 388, + "exportedSymbols": { + "ERC20": [ + 387 + ] + }, + "nodeType": "SourceUnit", + "src": "42:6770:0", + "nodes": [ + { + "id": 1, + "nodeType": "PragmaDirective", + "src": "42:24:0", + "nodes": [], + "literals": [ + "solidity", + ">=", + "0.8", + ".0" + ] + }, + { + "id": 387, + "nodeType": "ContractDefinition", + "src": "474:6337:0", + "nodes": [ + { + "id": 10, + "nodeType": "EventDefinition", + "src": "683:73:0", + "nodes": [], + "anonymous": false, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "nameLocation": "689:8:0", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "714:4:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "698:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "698:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "736:2:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "720:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "720:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "748:6:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "740:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "740:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "697:58:0" + } + }, + { + "id": 18, + "nodeType": "EventDefinition", + "src": "762:79:0", + "nodes": [], + "anonymous": false, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "nameLocation": "768:8:0", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "793:5:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "777:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "777:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "816:7:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "800:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "800:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "833:6:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "825:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "825:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "776:64:0" + } + }, + { + "id": 20, + "nodeType": "VariableDeclaration", + "src": "1031:18:0", + "nodes": [], + "constant": false, + "functionSelector": "06fdde03", + "mutability": "mutable", + "name": "name", + "nameLocation": "1045:4:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 19, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1031:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 22, + "nodeType": "VariableDeclaration", + "src": "1056:20:0", + "nodes": [], + "constant": false, + "functionSelector": "95d89b41", + "mutability": "mutable", + "name": "symbol", + "nameLocation": "1070:6:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 21, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1056:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 24, + "nodeType": "VariableDeclaration", + "src": "1083:31:0", + "nodes": [], + "constant": false, + "functionSelector": "313ce567", + "mutability": "immutable", + "name": "decimals", + "nameLocation": "1106:8:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 23, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1083:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "public" + }, + { + "id": 26, + "nodeType": "VariableDeclaration", + "src": "1304:26:0", + "nodes": [], + "constant": false, + "functionSelector": "18160ddd", + "mutability": "mutable", + "name": "totalSupply", + "nameLocation": "1319:11:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1304:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 30, + "nodeType": "VariableDeclaration", + "src": "1337:44:0", + "nodes": [], + "constant": false, + "functionSelector": "70a08231", + "mutability": "mutable", + "name": "balanceOf", + "nameLocation": "1372:9:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 29, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 27, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1345:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1337:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 28, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1356:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "id": 36, + "nodeType": "VariableDeclaration", + "src": "1388:64:0", + "nodes": [], + "constant": false, + "functionSelector": "dd62ed3e", + "mutability": "mutable", + "name": "allowance", + "nameLocation": "1443:9:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 35, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 31, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1396:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1388:47:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 34, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1415:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1407:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 33, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "public" + }, + { + "id": 38, + "nodeType": "VariableDeclaration", + "src": "1643:43:0", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "INITIAL_CHAIN_ID", + "nameLocation": "1670:16:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 37, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1643:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "id": 40, + "nodeType": "VariableDeclaration", + "src": "1693:51:0", + "nodes": [], + "constant": false, + "mutability": "immutable", + "name": "INITIAL_DOMAIN_SEPARATOR", + "nameLocation": "1720:24:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 39, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "id": 44, + "nodeType": "VariableDeclaration", + "src": "1751:41:0", + "nodes": [], + "constant": false, + "functionSelector": "7ecebe00", + "mutability": "mutable", + "name": "nonces", + "nameLocation": "1786:6:0", + "scope": 387, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 43, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 41, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1759:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1751:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 42, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "id": 76, + "nodeType": "FunctionDefinition", + "src": "1981:292:0", + "nodes": [], + "body": { + "id": 75, + "nodeType": "Block", + "src": "2084:189:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 53, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "2094:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 54, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "2101:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2094:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 56, + "nodeType": "ExpressionStatement", + "src": "2094:12:0" + }, + { + "expression": { + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 57, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "2116:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 58, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "2125:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2116:16:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 60, + "nodeType": "ExpressionStatement", + "src": "2116:16:0" + }, + { + "expression": { + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 61, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "2142:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 62, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "2153:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2142:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 64, + "nodeType": "ExpressionStatement", + "src": "2142:20:0" + }, + { + "expression": { + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65, + "name": "INITIAL_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "2173:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 66, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2192:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2198:7:0", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "2192:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2173:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 69, + "nodeType": "ExpressionStatement", + "src": "2173:32:0" + }, + { + "expression": { + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 70, + "name": "INITIAL_DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "2215:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 71, + "name": "computeDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "2242:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 72, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2242:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2215:51:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 74, + "nodeType": "ExpressionStatement", + "src": "2215:51:0" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 46, + "mutability": "mutable", + "name": "_name", + "nameLocation": "2016:5:0", + "nodeType": "VariableDeclaration", + "scope": 76, + "src": "2002:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 45, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2002:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 48, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "2045:7:0", + "nodeType": "VariableDeclaration", + "scope": 76, + "src": "2031:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 47, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2031:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "_decimals", + "nameLocation": "2068:9:0", + "nodeType": "VariableDeclaration", + "scope": 76, + "src": "2062:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 49, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2062:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "1992:91:0" + }, + "returnParameters": { + "id": 52, + "nodeType": "ParameterList", + "parameters": [], + "src": "2084:0:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 104, + "nodeType": "FunctionDefinition", + "src": "2461:211:0", + "nodes": [], + "body": { + "id": 103, + "nodeType": "Block", + "src": "2541:131:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 85, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "2551:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 89, + "indexExpression": { + "expression": { + "id": 86, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2561:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2565:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2561:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2551:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 90, + "indexExpression": { + "id": 88, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "2573:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2551:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 91, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "2584:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2551:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 93, + "nodeType": "ExpressionStatement", + "src": "2551:39:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 95, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2615:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2619:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2615:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 97, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "2627:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 98, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "2636:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 94, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "2606:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2606:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 100, + "nodeType": "EmitStatement", + "src": "2601:42:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2661:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 84, + "id": 102, + "nodeType": "Return", + "src": "2654:11:0" + } + ] + }, + "functionSelector": "095ea7b3", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2470:7:0", + "parameters": { + "id": 81, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2486:7:0", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2478:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 77, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2478:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 80, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2503:6:0", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2495:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 79, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2477:33:0" + }, + "returnParameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "2535:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 82, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2535:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2534:6:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 137, + "nodeType": "FunctionDefinition", + "src": "2678:373:0", + "nodes": [], + "body": { + "id": 136, + "nodeType": "Block", + "src": "2754:297:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 113, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2764:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 116, + "indexExpression": { + "expression": { + "id": 114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2774:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2778:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2774:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2764:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 117, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "2789:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2764:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 119, + "nodeType": "ExpressionStatement", + "src": "2764:31:0" + }, + { + "id": 126, + "nodeType": "UncheckedBlock", + "src": "2917:58:0", + "statements": [ + { + "expression": { + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 120, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2941:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 122, + "indexExpression": { + "id": 121, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "2951:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2941:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 123, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "2958:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2941:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 125, + "nodeType": "ExpressionStatement", + "src": "2941:23:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 128, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2999:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3003:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2999:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 130, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 106, + "src": "3011:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 131, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "3015:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 127, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "2990:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2990:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 133, + "nodeType": "EmitStatement", + "src": "2985:37:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3040:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 112, + "id": 135, + "nodeType": "Return", + "src": "3033:11:0" + } + ] + }, + "functionSelector": "a9059cbb", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "2687:8:0", + "parameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 106, + "mutability": "mutable", + "name": "to", + "nameLocation": "2704:2:0", + "nodeType": "VariableDeclaration", + "scope": 137, + "src": "2696:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2696:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 108, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2716:6:0", + "nodeType": "VariableDeclaration", + "scope": 137, + "src": "2708:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2708:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2695:28:0" + }, + "returnParameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 137, + "src": "2748:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 110, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2748:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2747:6:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 198, + "nodeType": "FunctionDefinition", + "src": "3057:592:0", + "nodes": [], + "body": { + "id": 197, + "nodeType": "Block", + "src": "3181:468:0", + "nodes": [], + "statements": [ + { + "assignments": [ + 149 + ], + "declarations": [ + { + "constant": false, + "id": 149, + "mutability": "mutable", + "name": "allowed", + "nameLocation": "3199:7:0", + "nodeType": "VariableDeclaration", + "scope": 197, + "src": "3191:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3191:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 156, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 150, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "3209:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 152, + "indexExpression": { + "id": 151, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 139, + "src": "3219:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3209:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 155, + "indexExpression": { + "expression": { + "id": 153, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3225:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3229:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3225:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3209:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3191:45:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 157, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "3287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3303:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3303:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 158, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3298:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3298:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3312:3:0", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3298:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3287:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 175, + "nodeType": "IfStatement", + "src": "3283:80:0", + "trueBody": { + "expression": { + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 164, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "3317:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 168, + "indexExpression": { + "id": 165, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 139, + "src": "3327:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3317:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 169, + "indexExpression": { + "expression": { + "id": 166, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3333:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3337:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3333:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3317:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 170, + "name": "allowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 149, + "src": "3347:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 171, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "3357:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3347:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3317:46:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "3317:46:0" + } + }, + { + "expression": { + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 176, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "3374:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 178, + "indexExpression": { + "id": 177, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 139, + "src": "3384:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3374:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 179, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "3393:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3374:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 181, + "nodeType": "ExpressionStatement", + "src": "3374:25:0" + }, + { + "id": 188, + "nodeType": "UncheckedBlock", + "src": "3521:58:0", + "statements": [ + { + "expression": { + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 182, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "3545:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 184, + "indexExpression": { + "id": 183, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "3555:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3545:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 185, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "3562:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3545:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 187, + "nodeType": "ExpressionStatement", + "src": "3545:23:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "id": 190, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 139, + "src": "3603:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 191, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 141, + "src": "3609:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 192, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 143, + "src": "3613:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 189, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "3594:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3594:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 194, + "nodeType": "EmitStatement", + "src": "3589:31:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3638:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 147, + "id": 196, + "nodeType": "Return", + "src": "3631:11:0" + } + ] + }, + "functionSelector": "23b872dd", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "3066:12:0", + "parameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 139, + "mutability": "mutable", + "name": "from", + "nameLocation": "3096:4:0", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "3088:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3088:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 141, + "mutability": "mutable", + "name": "to", + "nameLocation": "3118:2:0", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "3110:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3110:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 143, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3138:6:0", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "3130:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 142, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3130:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3078:72:0" + }, + "returnParameters": { + "id": 147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 146, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "3175:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 145, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3175:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3174:6:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 285, + "nodeType": "FunctionDefinition", + "src": "3838:1483:0", + "nodes": [], + "body": { + "id": 284, + "nodeType": "Block", + "src": "4027:1294:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 216, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4045:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 217, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "4057:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4063:9:0", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "4057:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4045:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5045524d49545f444541444c494e455f45585049524544", + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4074:25:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e", + "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\"" + }, + "value": "PERMIT_DEADLINE_EXPIRED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e", + "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\"" + } + ], + "id": 215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4037:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4037:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 222, + "nodeType": "ExpressionStatement", + "src": "4037:63:0" + }, + { + "id": 277, + "nodeType": "UncheckedBlock", + "src": "4241:1027:0", + "statements": [ + { + "assignments": [ + 224 + ], + "declarations": [ + { + "constant": false, + "id": 224, + "mutability": "mutable", + "name": "recoveredAddress", + "nameLocation": "4273:16:0", + "nodeType": "VariableDeclaration", + "scope": 277, + "src": "4265:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4265:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 254, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4392:10:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 230, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 300, + "src": "4428:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4428:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4602:84:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9", + "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + }, + "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9", + "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 235, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4555:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4555:165:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 238, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "4754:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 239, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4793:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 240, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "4834:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4873:15:0", + "subExpression": { + "baseExpression": { + "id": 241, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "4873:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 243, + "indexExpression": { + "id": 242, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "4880:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4873:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 245, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4922:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 233, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4511:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4515:6:0", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4511:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4511:449:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 232, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4472:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4472:514:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 227, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4350:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4354:12:0", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "4350:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4350:658:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 226, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4319:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4319:707:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 250, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 208, + "src": "5044:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 251, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 210, + "src": "5063:1:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 252, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "5082:1:0", + "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": 225, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "4292:9:0", + "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": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4292:805:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4265:832:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 256, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "5120:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5148:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5140:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5140:7:0", + "typeDescriptions": {} + } + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5140:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5120:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 262, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "5154:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 263, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "5174:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5154:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5120:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "494e56414c49445f5349474e4552", + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5181:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c", + "typeString": "literal_string \"INVALID_SIGNER\"" + }, + "value": "INVALID_SIGNER" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c", + "typeString": "literal_string \"INVALID_SIGNER\"" + } + ], + "id": 255, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5112:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5112:86:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 268, + "nodeType": "ExpressionStatement", + "src": "5112:86:0" + }, + { + "expression": { + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 269, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "5213:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 272, + "indexExpression": { + "id": 270, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 224, + "src": "5223:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5213:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 273, + "indexExpression": { + "id": 271, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "5241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5213:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 274, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "5252:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5213:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "5213:44:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "id": 279, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "5292:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 280, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "5299:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 281, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "5308:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 278, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "5283:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5283:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 283, + "nodeType": "EmitStatement", + "src": "5278:36:0" + } + ] + }, + "functionSelector": "d505accf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "permit", + "nameLocation": "3847:6:0", + "parameters": { + "id": 213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3871:5:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3863:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3863:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 202, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3894:7:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3886:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3886:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "value", + "nameLocation": "3919:5:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3911:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3911:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "deadline", + "nameLocation": "3942:8:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3934:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3934:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 208, + "mutability": "mutable", + "name": "v", + "nameLocation": "3966:1:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3960:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 207, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3960:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 210, + "mutability": "mutable", + "name": "r", + "nameLocation": "3985:1:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3977:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 209, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3977:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "s", + "nameLocation": "4004:1:0", + "nodeType": "VariableDeclaration", + "scope": 285, + "src": "3996:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3996:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3853:158:0" + }, + "returnParameters": { + "id": 214, + "nodeType": "ParameterList", + "parameters": [], + "src": "4027:0:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 300, + "nodeType": "FunctionDefinition", + "src": "5327:177:0", + "nodes": [], + "body": { + "id": 299, + "nodeType": "Block", + "src": "5393:111:0", + "nodes": [], + "statements": [ + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 290, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5410:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5416:7:0", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "5410:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 292, + "name": "INITIAL_CHAIN_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "5427:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5410:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 295, + "name": "computeDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "5473:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5473:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "5410:87:0", + "trueExpression": { + "id": 294, + "name": "INITIAL_DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5446:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 289, + "id": 298, + "nodeType": "Return", + "src": "5403:94:0" + } + ] + }, + "functionSelector": "3644e515", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "DOMAIN_SEPARATOR", + "nameLocation": "5336:16:0", + "parameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "5352:2:0" + }, + "returnParameters": { + "id": 289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 288, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "5384:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 287, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5384:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5383:9:0" + }, + "scope": 387, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 330, + "nodeType": "FunctionDefinition", + "src": "5510:446:0", + "nodes": [], + "body": { + "id": 329, + "nodeType": "Block", + "src": "5584:372:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5682:84:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 308, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5672:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5672:95:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 314, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "5805:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5799:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 312, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5799:5:0", + "typeDescriptions": {} + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5799:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + ], + "id": 311, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5789:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5789:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5843:3:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 317, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5833:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5833:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 320, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5869:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5875:7:0", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "5869:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 324, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5912:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$387", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$387", + "typeString": "contract ERC20" + } + ], + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5904:7:0", + "typeDescriptions": {} + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5904:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 306, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5640:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5644:6:0", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "5640:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5640:295:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 305, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5613:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5613:336:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 304, + "id": 328, + "nodeType": "Return", + "src": "5594:355:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "computeDomainSeparator", + "nameLocation": "5519:22:0", + "parameters": { + "id": 301, + "nodeType": "ParameterList", + "parameters": [], + "src": "5541:2:0" + }, + "returnParameters": { + "id": 304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "5575:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5575:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5574:9:0" + }, + "scope": 387, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "id": 358, + "nodeType": "FunctionDefinition", + "src": "6150:325:0", + "nodes": [], + "body": { + "id": 357, + "nodeType": "Block", + "src": "6210:265:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 337, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "6220:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 338, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "6235:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6220:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "6220:21:0" + }, + { + "id": 347, + "nodeType": "UncheckedBlock", + "src": "6363:58:0", + "statements": [ + { + "expression": { + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 341, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "6387:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 343, + "indexExpression": { + "id": 342, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "6397:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6387:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 344, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "6404:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6387:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 346, + "nodeType": "ExpressionStatement", + "src": "6387:23:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6453:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6445:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6445:7:0", + "typeDescriptions": {} + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6445:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 353, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "6457:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 354, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "6461:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 348, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6436:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6436:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 356, + "nodeType": "EmitStatement", + "src": "6431:37:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "6159:5:0", + "parameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 332, + "mutability": "mutable", + "name": "to", + "nameLocation": "6173:2:0", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "6165:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 331, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6165:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6185:6:0", + "nodeType": "VariableDeclaration", + "scope": 358, + "src": "6177:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6177:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6164:28:0" + }, + "returnParameters": { + "id": 336, + "nodeType": "ParameterList", + "parameters": [], + "src": "6210:0:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 386, + "nodeType": "FunctionDefinition", + "src": "6481:328:0", + "nodes": [], + "body": { + "id": 385, + "nodeType": "Block", + "src": "6543:266:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 365, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "6553:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 367, + "indexExpression": { + "id": 366, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6563:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6553:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 368, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6572:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6553:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 370, + "nodeType": "ExpressionStatement", + "src": "6553:25:0" + }, + { + "id": 375, + "nodeType": "UncheckedBlock", + "src": "6697:56:0", + "statements": [ + { + "expression": { + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 371, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "6721:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 372, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6736:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6721:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 374, + "nodeType": "ExpressionStatement", + "src": "6721:21:0" + } + ] + }, + { + "eventCall": { + "arguments": [ + { + "id": 377, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6777:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6791:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6783:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 378, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6783:7:0", + "typeDescriptions": {} + } + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6783:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 382, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6795:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 376, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "6768:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6768:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 384, + "nodeType": "EmitStatement", + "src": "6763:39:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "6490:5:0", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 360, + "mutability": "mutable", + "name": "from", + "nameLocation": "6504:4:0", + "nodeType": "VariableDeclaration", + "scope": 386, + "src": "6496:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6496:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6518:6:0", + "nodeType": "VariableDeclaration", + "scope": 386, + "src": "6510:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 361, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6510:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6495:30:0" + }, + "returnParameters": { + "id": 364, + "nodeType": "ParameterList", + "parameters": [], + "src": "6543:0:0" + }, + "scope": 387, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "68:406:0", + "text": "@notice Modern and gas efficient ERC20 + EIP-2612 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)\n @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)\n @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it." + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 387 + ], + "name": "ERC20", + "nameLocation": "492:5:0", + "scope": 388, + "usedErrors": [] + } + ], + "license": "AGPL-3.0-only" + }, + "id": 0 +} as const; + +export const MockERC20 = { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60e06040523480156200001157600080fd5b5060405162001028380380620010288339810160408190526200003491620001db565b8282826000620000458482620002ef565b506001620000548382620002ef565b5060ff81166080524660a0526200006a6200007a565b60c0525062000439945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000ae9190620003bb565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013e57600080fd5b81516001600160401b03808211156200015b576200015b62000116565b604051601f8301601f19908116603f0116810190828211818310171562000186576200018662000116565b81604052838152602092508683858801011115620001a357600080fd5b600091505b83821015620001c75785820183015181830184015290820190620001a8565b600093810190920192909252949350505050565b600080600060608486031215620001f157600080fd5b83516001600160401b03808211156200020957600080fd5b62000217878388016200012c565b945060208601519150808211156200022e57600080fd5b506200023d868287016200012c565b925050604084015160ff811681146200025557600080fd5b809150509250925092565b600181811c908216806200027557607f821691505b6020821081036200029657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ea57600081815260208120601f850160051c81016020861015620002c55750805b601f850160051c820191505b81811015620002e657828155600101620002d1565b5050505b505050565b81516001600160401b038111156200030b576200030b62000116565b62000323816200031c845462000260565b846200029c565b602080601f8311600181146200035b5760008415620003425750858301515b600019600386901b1c1916600185901b178555620002e6565b600085815260208120601f198616915b828110156200038c578886015182559484019460019091019084016200036b565b5085821015620003ab5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620003cb8162000260565b60018281168015620003e65760018114620003fc576200042d565b60ff19841687528215158302870194506200042d565b8760005260208060002060005b85811015620004245781548a82015290840190820162000409565b50505082870194505b50929695505050505050565b60805160a05160c051610bbf6200046960003960006104700152600061043b0152600061015f0152610bbf6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c5780639dc29fac116100665780639dc29fac146101f8578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101b05780637ecebe00146101d057806395d89b41146101f057600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b60405161010491906108bc565b60405180910390f35b61012061011b366004610926565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610950565b610357565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b610139610437565b6101ae6101a9366004610926565b610492565b005b6101396101be36600461098c565b60036020526000908152604090205481565b6101396101de36600461098c565b60056020526000908152604090205481565b6100f76104a0565b6101ae610206366004610926565b6104ad565b610120610219366004610926565b6104b7565b6101ae61022c3660046109ae565b61051d565b61013961023f366004610a21565b600460209081526000928352604080842090915290825290205481565b6000805461026990610a54565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610a54565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103b35761038e8382610aa4565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103db908490610aa4565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020610b6a833981519152906104249087815260200190565b60405180910390a3506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461046d57610468610766565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61049c8282610800565b5050565b6001805461026990610a54565b61049c828261085a565b336000908152600360205260408120805483919083906104d8908490610aa4565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020610b6a833981519152906103459086815260200190565b428410156105725760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057e610437565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561068a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106c05750876001600160a01b0316816001600160a01b0316145b6106fd5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610569565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107989190610ab7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108129190610b56565b90915550506001600160a01b038216600081815260036020908152604080832080548601905551848152600080516020610b6a83398151915291015b60405180910390a35050565b6001600160a01b03821660009081526003602052604081208054839290610882908490610aa4565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020610b6a8339815191529060200161084e565b600060208083528351808285015260005b818110156108e9578581018301518582016040015282016108cd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461092157600080fd5b919050565b6000806040838503121561093957600080fd5b6109428361090a565b946020939093013593505050565b60008060006060848603121561096557600080fd5b61096e8461090a565b925061097c6020850161090a565b9150604084013590509250925092565b60006020828403121561099e57600080fd5b6109a78261090a565b9392505050565b600080600080600080600060e0888a0312156109c957600080fd5b6109d28861090a565b96506109e06020890161090a565b95506040880135945060608801359350608088013560ff81168114610a0457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a3457600080fd5b610a3d8361090a565b9150610a4b6020840161090a565b90509250929050565b600181811c90821680610a6857607f821691505b602082108103610a8857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561035157610351610a8e565b600080835481600182811c915080831680610ad357607f831692505b60208084108203610af257634e487b7160e01b86526022600452602486fd5b818015610b065760018114610b1b57610b48565b60ff1986168952841515850289019650610b48565b60008a81526020902060005b86811015610b405781548b820152908501908301610b27565b505084890196505b509498975050505050505050565b8082018082111561035157610351610a8e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122002ee9cc3d5223be62cffc70e03832d66dd808947730fd64050cd5ab26b34bcbe64736f6c63430008120033", + "sourceMap": "111:368:1:-:0;;;145:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;254:5;261:7;270:9;2094:4:0;:12;254:5:1;2094:4:0;:12;:::i;:::-;-1:-1:-1;2116:6:0;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:0;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;111:368:1;;-1:-1:-1;;;;;111:368:1;5510:446:0;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5405:25:3;;;;5446:18;;5439:34;;;;5833:14:0;5489:18:3;;;5482:34;5869:13:0;5532:18:3;;;5525:34;5912:4:0;5575:19:3;;;5568:61;5377:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:3:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:3;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:3;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:3:o;991:712::-;1097:6;1105;1113;1166:2;1154:9;1145:7;1141:23;1137:32;1134:52;;;1182:1;1179;1172:12;1134:52;1209:16;;-1:-1:-1;;;;;1274:14:3;;;1271:34;;;1301:1;1298;1291:12;1271:34;1324:61;1377:7;1368:6;1357:9;1353:22;1324:61;:::i;:::-;1314:71;;1431:2;1420:9;1416:18;1410:25;1394:41;;1460:2;1450:8;1447:16;1444:36;;;1476:1;1473;1466:12;1444:36;;1499:63;1554:7;1543:8;1532:9;1528:24;1499:63;:::i;:::-;1489:73;;;1605:2;1594:9;1590:18;1584:25;1649:4;1642:5;1638:16;1631:5;1628:27;1618:55;;1669:1;1666;1659:12;1618:55;1692:5;1682:15;;;991:712;;;;;:::o;1708:380::-;1787:1;1783:12;;;;1830;;;1851:61;;1905:4;1897:6;1893:17;1883:27;;1851:61;1958:2;1950:6;1947:14;1927:18;1924:38;1921:161;;2004:10;1999:3;1995:20;1992:1;1985:31;2039:4;2036:1;2029:15;2067:4;2064:1;2057:15;1921:161;;1708:380;;;:::o;2219:545::-;2321:2;2316:3;2313:11;2310:448;;;2357:1;2382:5;2378:2;2371:17;2427:4;2423:2;2413:19;2497:2;2485:10;2481:19;2478:1;2474:27;2468:4;2464:38;2533:4;2521:10;2518:20;2515:47;;;-1:-1:-1;2556:4:3;2515:47;2611:2;2606:3;2602:12;2599:1;2595:20;2589:4;2585:31;2575:41;;2666:82;2684:2;2677:5;2674:13;2666:82;;;2729:17;;;2710:1;2699:13;2666:82;;;2670:3;;;2310:448;2219:545;;;:::o;2940:1352::-;3060:10;;-1:-1:-1;;;;;3082:30:3;;3079:56;;;3115:18;;:::i;:::-;3144:97;3234:6;3194:38;3226:4;3220:11;3194:38;:::i;:::-;3188:4;3144:97;:::i;:::-;3296:4;;3360:2;3349:14;;3377:1;3372:663;;;;4079:1;4096:6;4093:89;;;-1:-1:-1;4148:19:3;;;4142:26;4093:89;-1:-1:-1;;2897:1:3;2893:11;;;2889:24;2885:29;2875:40;2921:1;2917:11;;;2872:57;4195:81;;3342:944;;3372:663;2166:1;2159:14;;;2203:4;2190:18;;-1:-1:-1;;3408:20:3;;;3526:236;3540:7;3537:1;3534:14;3526:236;;;3629:19;;;3623:26;3608:42;;3721:27;;;;3689:1;3677:14;;;;3556:19;;3526:236;;;3530:3;3790:6;3781:7;3778:19;3775:201;;;3851:19;;;3845:26;-1:-1:-1;;3934:1:3;3930:14;;;3946:3;3926:24;3922:37;3918:42;3903:58;3888:74;;3775:201;-1:-1:-1;;;;;4022:1:3;4006:14;;;4002:22;3989:36;;-1:-1:-1;2940:1352:3:o;4297:844::-;4427:3;4456:1;4489:6;4483:13;4519:36;4545:9;4519:36;:::i;:::-;4574:1;4591:18;;;4618:133;;;;4765:1;4760:356;;;;4584:532;;4618:133;-1:-1:-1;;4651:24:3;;4639:37;;4724:14;;4717:22;4705:35;;4696:45;;;-1:-1:-1;4618:133:3;;4760:356;4791:6;4788:1;4781:17;4821:4;4866:2;4863:1;4853:16;4891:1;4905:165;4919:6;4916:1;4913:13;4905:165;;;4997:14;;4984:11;;;4977:35;5040:16;;;;4934:10;;4905:165;;;4909:3;;;5099:6;5094:3;5090:16;5083:23;;4584:532;-1:-1:-1;5132:3:3;;4297:844;-1:-1:-1;;;;;;4297:844:3:o;5146:489::-;111:368:1;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c5780639dc29fac116100665780639dc29fac146101f8578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101b05780637ecebe00146101d057806395d89b41146101f057600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b60405161010491906108bc565b60405180910390f35b61012061011b366004610926565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610950565b610357565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b610139610437565b6101ae6101a9366004610926565b610492565b005b6101396101be36600461098c565b60036020526000908152604090205481565b6101396101de36600461098c565b60056020526000908152604090205481565b6100f76104a0565b6101ae610206366004610926565b6104ad565b610120610219366004610926565b6104b7565b6101ae61022c3660046109ae565b61051d565b61013961023f366004610a21565b600460209081526000928352604080842090915290825290205481565b6000805461026990610a54565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610a54565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103b35761038e8382610aa4565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103db908490610aa4565b90915550506001600160a01b0380851660008181526003602052604090819020805487019055519091871690600080516020610b6a833981519152906104249087815260200190565b60405180910390a3506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461046d57610468610766565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61049c8282610800565b5050565b6001805461026990610a54565b61049c828261085a565b336000908152600360205260408120805483919083906104d8908490610aa4565b90915550506001600160a01b03831660008181526003602052604090819020805485019055513390600080516020610b6a833981519152906103459086815260200190565b428410156105725760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057e610437565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561068a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106c05750876001600160a01b0316816001600160a01b0316145b6106fd5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610569565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107989190610ab7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108129190610b56565b90915550506001600160a01b038216600081815260036020908152604080832080548601905551848152600080516020610b6a83398151915291015b60405180910390a35050565b6001600160a01b03821660009081526003602052604081208054839290610882908490610aa4565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020610b6a8339815191529060200161084e565b600060208083528351808285015260005b818110156108e9578581018301518582016040015282016108cd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461092157600080fd5b919050565b6000806040838503121561093957600080fd5b6109428361090a565b946020939093013593505050565b60008060006060848603121561096557600080fd5b61096e8461090a565b925061097c6020850161090a565b9150604084013590509250925092565b60006020828403121561099e57600080fd5b6109a78261090a565b9392505050565b600080600080600080600060e0888a0312156109c957600080fd5b6109d28861090a565b96506109e06020890161090a565b95506040880135945060608801359350608088013560ff81168114610a0457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a3457600080fd5b610a3d8361090a565b9150610a4b6020840161090a565b90509250929050565b600181811c90821680610a6857607f821691505b602082108103610a8857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561035157610351610a8e565b600080835481600182811c915080831680610ad357607f831692505b60208084108203610af257634e487b7160e01b86526022600452602486fd5b818015610b065760018114610b1b57610b48565b60ff1986168952841515850289019650610b48565b60008a81526020902060005b86811015610b405781548b820152908501908301610b27565b505084890196505b509498975050505050505050565b8082018082111561035157610351610a8e56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122002ee9cc3d5223be62cffc70e03832d66dd808947730fd64050cd5ab26b34bcbe64736f6c63430008120033", + "sourceMap": "111:368:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:18:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2461:211;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:3;;1162:22;1144:41;;1132:2;1117:18;2461:211:0;1004:187:3;1304:26:0;;;;;;;;;1342:25:3;;;1330:2;1315:18;1304:26:0;1196:177:3;3057:592:0;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;1883:4:3;1871:17;;;1853:36;;1841:2;1826:18;1083:31:0;1711:184:3;5327:177:0;;;:::i;289:89:1:-;;;;;;:::i;:::-;;:::i;:::-;;1337:44:0;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1056:20;;;:::i;384:93:1:-;;;;;;:::i;:::-;;:::i;2678:373:0:-;;;;;;:::i;:::-;;:::i;3838:1483::-;;;;;;:::i;:::-;;:::i;1388:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1031:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2461:211::-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:0;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;1342:25:3;;1330:2;1315:18;;1196:177;2606:37:0;;;;;;;;-1:-1:-1;2661:4:0;2461:211;;;;;:::o;3057:592::-;-1:-1:-1;;;;;3209:15:0;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:0;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:0;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:0;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;-1:-1:-1;;;;;;;;;;;3594:26:0;;;3562:6;1342:25:3;;1330:2;1315:18;;1196:177;3594:26:0;;;;;;;;-1:-1:-1;3638:4:0;;3057:592;-1:-1:-1;;;;3057:592:0:o;5327:177::-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;:::-;5403:94;;5327:177;:::o;5410:87::-;-1:-1:-1;5446:24:0;;5327:177::o;289:89:1:-;355:16;361:2;365:5;355;:16::i;:::-;289:89;;:::o;1056:20:0:-;;;;;;;:::i;384:93:1:-;452:18;458:4;464:5;452;:18::i;2678:373:0:-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;-1:-1:-1;;;;;;;;;;;2990:32:0;;;2958:6;1342:25:3;;1330:2;1315:18;;1196:177;3838:1483:0;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:0;;4088:2:3;4037:63:0;;;4070:21:3;4127:2;4107:18;;;4100:30;4166:25;4146:18;;;4139:53;4209:18;;4037:63:0;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;4525:25:3;4604:18;;;4597:43;;;;4676:15;;;4656:18;;;4649:43;4708:18;;;4701:34;;;4751:19;;;4744:35;;;;4795:19;;;;4788:35;;;4511:449:0;;;;;;;;;;4497:19:3;;;4511:449:0;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:0;;;5092:27:3;5135:11;;;5128:27;;;;5171:12;;;5164:28;;;;5208:12;;4350:658:0;;;-1:-1:-1;;4350:658:0;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;5458:25:3;5531:4;5519:17;;5499:18;;;5492:45;5553:18;;;5546:34;;;5596:18;;;5589:34;;;5430:19;;4292:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:0;;-1:-1:-1;;4292:805:0;;;-1:-1:-1;;;;;;;5120:30:0;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:0;:16;-1:-1:-1;;;;;5154:25:0;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:0;;5836:2:3;5112:86:0;;;5818:21:3;5875:2;5855:18;;;5848:30;-1:-1:-1;;;5894:18:3;;;5887:44;5948:18;;5112:86:0;5634:338:3;5112:86:0;-1:-1:-1;;;;;5213:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;1342:25:3;;;5213:36:0;;5283:31;;;;;1315:18:3;5283:31:0;;;;;;;3838:1483;;;;;;;:::o;5510:446::-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;7503:25:3;;;;7544:18;;7537:34;;;;5833:14:0;7587:18:3;;;7580:34;5869:13:0;7630:18:3;;;7623:34;5912:4:0;7673:19:3;;;7666:61;7475:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;6150:325::-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;1342:25:3;;;-1:-1:-1;;;;;;;;;;;6436:32:0;1315:18:3;6436:32:0;;;;;;;;6150:325;;:::o;6481:328::-;-1:-1:-1;;;;;6553:15:0;;;;;;:9;:15;;;;;:25;;6572:6;;6553:15;:25;;6572:6;;6553:25;:::i;:::-;;;;-1:-1:-1;;6721:11:0;:21;;;;;;;6768:34;;1342:25:3;;;-1:-1:-1;;;;;;;6768:34:0;;;-1:-1:-1;;;;;;;;;;;6768:34:0;1330:2:3;1315:18;6768:34:0;1196:177:3;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:3;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:3:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;2082:186::-;2141:6;2194:2;2182:9;2173:7;2169:23;2165:32;2162:52;;;2210:1;2207;2200:12;2162:52;2233:29;2252:9;2233:29;:::i;:::-;2223:39;2082:186;-1:-1:-1;;;2082:186:3:o;2273:693::-;2384:6;2392;2400;2408;2416;2424;2432;2485:3;2473:9;2464:7;2460:23;2456:33;2453:53;;;2502:1;2499;2492:12;2453:53;2525:29;2544:9;2525:29;:::i;:::-;2515:39;;2573:38;2607:2;2596:9;2592:18;2573:38;:::i;:::-;2563:48;;2658:2;2647:9;2643:18;2630:32;2620:42;;2709:2;2698:9;2694:18;2681:32;2671:42;;2763:3;2752:9;2748:19;2735:33;2808:4;2801:5;2797:16;2790:5;2787:27;2777:55;;2828:1;2825;2818:12;2777:55;2273:693;;;;-1:-1:-1;2273:693:3;;;;2851:5;2903:3;2888:19;;2875:33;;-1:-1:-1;2955:3:3;2940:19;;;2927:33;;2273:693;-1:-1:-1;;2273:693:3:o;2971:260::-;3039:6;3047;3100:2;3088:9;3079:7;3075:23;3071:32;3068:52;;;3116:1;3113;3106:12;3068:52;3139:29;3158:9;3139:29;:::i;:::-;3129:39;;3187:38;3221:2;3210:9;3206:18;3187:38;:::i;:::-;3177:48;;2971:260;;;;;:::o;3236:380::-;3315:1;3311:12;;;;3358;;;3379:61;;3433:4;3425:6;3421:17;3411:27;;3379:61;3486:2;3478:6;3475:14;3455:18;3452:38;3449:161;;3532:10;3527:3;3523:20;3520:1;3513:31;3567:4;3564:1;3557:15;3595:4;3592:1;3585:15;3449:161;;3236:380;;;:::o;3621:127::-;3682:10;3677:3;3673:20;3670:1;3663:31;3713:4;3710:1;3703:15;3737:4;3734:1;3727:15;3753:128;3820:9;;;3841:11;;;3838:37;;;3855:18;;:::i;6106:1133::-;6236:3;6265:1;6298:6;6292:13;6328:3;6350:1;6378:9;6374:2;6370:18;6360:28;;6438:2;6427:9;6423:18;6460;6450:61;;6504:4;6496:6;6492:17;6482:27;;6450:61;6530:2;6578;6570:6;6567:14;6547:18;6544:38;6541:165;;-1:-1:-1;;;6605:33:3;;6661:4;6658:1;6651:15;6691:4;6612:3;6679:17;6541:165;6722:18;6749:133;;;;6896:1;6891:323;;;;6715:499;;6749:133;-1:-1:-1;;6782:24:3;;6770:37;;6855:14;;6848:22;6836:35;;6827:45;;;-1:-1:-1;6749:133:3;;6891:323;6053:1;6046:14;;;6090:4;6077:18;;6989:1;7003:165;7017:6;7014:1;7011:13;7003:165;;;7095:14;;7082:11;;;7075:35;7138:16;;;;7032:10;;7003:165;;;7007:3;;7197:6;7192:3;7188:16;7181:23;;6715:499;-1:-1:-1;7230:3:3;;6106:1133;-1:-1:-1;;;;;;;;6106:1133:3:o;7738:125::-;7803:9;;;7824:10;;;7821:36;;;7837:18;;:::i", + "linkReferences": {}, + "immutableReferences": { + "24": [ + { + "start": 351, + "length": 32 + } + ], + "38": [ + { + "start": 1083, + "length": 32 + } + ], + "40": [ + { + "start": 1136, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address,uint256)": "9dc29fac", + "decimals()": "313ce567", + "mint(address,uint256)": "40c10f19", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MockERC20.sol\":\"MockERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"../../node_modules/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x49836aafa3083540e996e436239b93cd31a0fc6a16f794af8899d8ec15ebf446\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18a7d475c7fc8134374b7eba77055bf306f9c5b5851c0eb75f68f4be34039494\",\"dweb:/ipfs/QmUhAJ5PKBfZaw4N1YyaEmmtGnxu19YKXUb1b4tLKX4hk9\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "mint" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "permit" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/MockERC20.sol": "MockERC20" + }, + "libraries": {} + }, + "sources": { + "../../node_modules/solmate/src/tokens/ERC20.sol": { + "keccak256": "0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10", + "urls": [ + "bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35", + "dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97" + ], + "license": "AGPL-3.0-only" + }, + "src/MockERC20.sol": { + "keccak256": "0x49836aafa3083540e996e436239b93cd31a0fc6a16f794af8899d8ec15ebf446", + "urls": [ + "bzz-raw://18a7d475c7fc8134374b7eba77055bf306f9c5b5851c0eb75f68f4be34039494", + "dweb:/ipfs/QmUhAJ5PKBfZaw4N1YyaEmmtGnxu19YKXUb1b4tLKX4hk9" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/MockERC20.sol", + "id": 436, + "exportedSymbols": { + "ERC20": [ + 387 + ], + "MockERC20": [ + 435 + ] + }, + "nodeType": "SourceUnit", + "src": "32:448:1", + "nodes": [ + { + "id": 389, + "nodeType": "PragmaDirective", + "src": "32:24:1", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".18" + ] + }, + { + "id": 391, + "nodeType": "ImportDirective", + "src": "58:51:1", + "nodes": [], + "absolutePath": "../../node_modules/solmate/src/tokens/ERC20.sol", + "file": "solmate/src/tokens/ERC20.sol", + "nameLocation": "-1:-1:-1", + "scope": 436, + "sourceUnit": 388, + "symbolAliases": [ + { + "foreign": { + "id": 390, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "66:5:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 435, + "nodeType": "ContractDefinition", + "src": "111:368:1", + "nodes": [ + { + "id": 408, + "nodeType": "FunctionDefinition", + "src": "145:138:1", + "nodes": [], + "body": { + "id": 407, + "nodeType": "Block", + "src": "281:2:1", + "nodes": [], + "statements": [] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 402, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 395, + "src": "254:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 403, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 397, + "src": "261:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 404, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "270:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 405, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 401, + "name": "ERC20", + "nameLocations": [ + "248:5:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 387, + "src": "248:5:1" + }, + "nodeType": "ModifierInvocation", + "src": "248:32:1" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "_name", + "nameLocation": "180:5:1", + "nodeType": "VariableDeclaration", + "scope": 408, + "src": "166:19:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 394, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "166:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "209:7:1", + "nodeType": "VariableDeclaration", + "scope": 408, + "src": "195:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 396, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "195:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "mutability": "mutable", + "name": "_decimals", + "nameLocation": "232:9:1", + "nodeType": "VariableDeclaration", + "scope": 408, + "src": "226:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 398, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "226:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "156:91:1" + }, + "returnParameters": { + "id": 406, + "nodeType": "ParameterList", + "parameters": [], + "src": "281:0:1" + }, + "scope": 435, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 421, + "nodeType": "FunctionDefinition", + "src": "289:89:1", + "nodes": [], + "body": { + "id": 420, + "nodeType": "Block", + "src": "345:33:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 416, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "361:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 417, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "365:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 415, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 358, + "src": "355:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "355:16:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "ExpressionStatement", + "src": "355:16:1" + } + ] + }, + "functionSelector": "40c10f19", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "298:4:1", + "parameters": { + "id": 413, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 410, + "mutability": "mutable", + "name": "to", + "nameLocation": "311:2:1", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "303:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "303:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 412, + "mutability": "mutable", + "name": "value", + "nameLocation": "323:5:1", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "315:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 411, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "315:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "302:27:1" + }, + "returnParameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:0:1" + }, + "scope": 435, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 434, + "nodeType": "FunctionDefinition", + "src": "384:93:1", + "nodes": [], + "body": { + "id": 433, + "nodeType": "Block", + "src": "442:35:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 429, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "458:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 430, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "464:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 428, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 386, + "src": "452:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "452:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 432, + "nodeType": "ExpressionStatement", + "src": "452:18:1" + } + ] + }, + "functionSelector": "9dc29fac", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "393:4:1", + "parameters": { + "id": 426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "mutability": "mutable", + "name": "from", + "nameLocation": "406:4:1", + "nodeType": "VariableDeclaration", + "scope": 434, + "src": "398:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "value", + "nameLocation": "420:5:1", + "nodeType": "VariableDeclaration", + "scope": 434, + "src": "412:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "412:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "397:29:1" + }, + "returnParameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [], + "src": "442:0:1" + }, + "scope": 435, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 392, + "name": "ERC20", + "nameLocations": [ + "133:5:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 387, + "src": "133:5:1" + }, + "id": 393, + "nodeType": "InheritanceSpecifier", + "src": "133:5:1" + } + ], + "canonicalName": "MockERC20", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 435, + 387 + ], + "name": "MockERC20", + "nameLocation": "120:9:1", + "scope": 436, + "usedErrors": [] + } + ], + "license": "MIT" + }, + "id": 1 +} as const; + +export const ERC721TokenReceiver = { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A generic interface for a contract which properly accepts ERC721 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"../../node_modules/solmate/src/tokens/ERC721.sol\":\"ERC721TokenReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"../../node_modules/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "../../node_modules/solmate/src/tokens/ERC721.sol": "ERC721TokenReceiver" + }, + "libraries": {} + }, + "sources": { + "../../node_modules/solmate/src/tokens/ERC721.sol": { + "keccak256": "0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d", + "urls": [ + "bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403", + "dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK" + ], + "license": "AGPL-3.0-only" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "../../node_modules/solmate/src/tokens/ERC721.sol", + "id": 564, + "exportedSymbols": { + "ERC721": [ + 543 + ], + "ERC721TokenReceiver": [ + 563 + ] + }, + "nodeType": "SourceUnit", + "src": "42:7323:0", + "nodes": [ + { + "id": 1, + "nodeType": "PragmaDirective", + "src": "42:24:0", + "nodes": [], + "literals": [ + "solidity", + ">=", + "0.8", + ".0" + ] + }, + { + "id": 543, + "nodeType": "ContractDefinition", + "src": "239:6685:0", + "nodes": [ + { + "id": 10, + "nodeType": "EventDefinition", + "src": "449:77:0", + "nodes": [], + "anonymous": false, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "nameLocation": "455:8:0", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "480:4:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "464:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "502:2:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "486:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "486:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "522:2:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "506:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "506:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "463:62:0" + } + }, + { + "id": 18, + "nodeType": "EventDefinition", + "src": "532:83:0", + "nodes": [], + "anonymous": false, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "nameLocation": "538:8:0", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "563:5:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "547:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "547:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "586:7:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "570:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "570:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "611:2:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "595:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "595:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "546:68:0" + } + }, + { + "id": 26, + "nodeType": "EventDefinition", + "src": "621:85:0", + "nodes": [], + "anonymous": false, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "name": "ApprovalForAll", + "nameLocation": "627:14:0", + "parameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "658:5:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "642:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "642:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "681:8:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "665:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "665:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "696:8:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "691:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "691:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "641:64:0" + } + }, + { + "id": 28, + "nodeType": "VariableDeclaration", + "src": "899:18:0", + "nodes": [], + "constant": false, + "functionSelector": "06fdde03", + "mutability": "mutable", + "name": "name", + "nameLocation": "913:4:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 27, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "899:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 30, + "nodeType": "VariableDeclaration", + "src": "924:20:0", + "nodes": [], + "constant": false, + "functionSelector": "95d89b41", + "mutability": "mutable", + "name": "symbol", + "nameLocation": "938:6:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "924:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 37, + "nodeType": "FunctionDefinition", + "src": "951:74:0", + "nodes": [], + "functionSelector": "c87b56dd", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "960:8:0", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "id", + "nameLocation": "977:2:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "969:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "969:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "968:12:0" + }, + "returnParameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "1010:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 34, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1010:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1009:15:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 41, + "nodeType": "VariableDeclaration", + "src": "1221:45:0", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_ownerOf", + "nameLocation": "1258:8:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 40, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 38, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1229:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1221:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1240:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "id": 45, + "nodeType": "VariableDeclaration", + "src": "1273:47:0", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_balanceOf", + "nameLocation": "1310:10:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 44, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1281:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1273:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 43, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1292:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "id": 68, + "nodeType": "FunctionDefinition", + "src": "1327:149:0", + "nodes": [], + "body": { + "id": 67, + "nodeType": "Block", + "src": "1400:76:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 53, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1419:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 54, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "1427:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 56, + "indexExpression": { + "id": 55, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "1436:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1427:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1419:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 58, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1418:22:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1452:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 59, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1444:7:0", + "typeDescriptions": {} + } + }, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1444:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1418:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f4d494e544544", + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1456:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + }, + "value": "NOT_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + } + ], + "id": 52, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1410:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1410:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66, + "nodeType": "ExpressionStatement", + "src": "1410:59:0" + } + ] + }, + "functionSelector": "6352211e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1336:7:0", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "id", + "nameLocation": "1352:2:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "1344:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1344:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1343:12:0" + }, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1393:5:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "1385:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 49, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1384:15:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 90, + "nodeType": "FunctionDefinition", + "src": "1482:168:0", + "nodes": [], + "body": { + "id": 89, + "nodeType": "Block", + "src": "1554:96:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 76, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1572:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1589:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1581:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 77, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1581:7:0", + "typeDescriptions": {} + } + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1581:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1572:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5a45524f5f41444452455353", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1593:14:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af", + "typeString": "literal_string \"ZERO_ADDRESS\"" + }, + "value": "ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af", + "typeString": "literal_string \"ZERO_ADDRESS\"" + } + ], + "id": 75, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1564:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1564:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "1564:44:0" + }, + { + "expression": { + "baseExpression": { + "id": 85, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "1626:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 87, + "indexExpression": { + "id": 86, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1637:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1626:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 74, + "id": 88, + "nodeType": "Return", + "src": "1619:24:0" + } + ] + }, + "functionSelector": "70a08231", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "1491:9:0", + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1509:5:0", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "1501:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 69, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1501:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1500:15:0" + }, + "returnParameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "1545:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 72, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1545:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1544:9:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 94, + "nodeType": "VariableDeclaration", + "src": "1844:46:0", + "nodes": [], + "constant": false, + "functionSelector": "081812fc", + "mutability": "mutable", + "name": "getApproved", + "nameLocation": "1879:11:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 93, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 91, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1852:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1844:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1863:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "public" + }, + { + "id": 100, + "nodeType": "VariableDeclaration", + "src": "1897:68:0", + "nodes": [], + "constant": false, + "functionSelector": "e985e9c5", + "mutability": "mutable", + "name": "isApprovedForAll", + "nameLocation": "1949:16:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 99, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1897:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 98, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 96, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1916:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 97, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "visibility": "public" + }, + { + "id": 116, + "nodeType": "FunctionDefinition", + "src": "2154:111:0", + "nodes": [], + "body": { + "id": 115, + "nodeType": "Block", + "src": "2210:55:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 107, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "2220:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 108, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2227:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2220:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 110, + "nodeType": "ExpressionStatement", + "src": "2220:12:0" + }, + { + "expression": { + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 111, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2242:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 112, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2251:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2242:16:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 114, + "nodeType": "ExpressionStatement", + "src": "2242:16:0" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "_name", + "nameLocation": "2180:5:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "2166:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 101, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2166:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "2201:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "2187:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 103, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2187:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2165:44:0" + }, + "returnParameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [], + "src": "2210:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 157, + "nodeType": "FunctionDefinition", + "src": "2453:282:0", + "nodes": [], + "body": { + "id": 156, + "nodeType": "Block", + "src": "2514:221:0", + "nodes": [], + "statements": [ + { + "assignments": [ + 124 + ], + "declarations": [ + { + "constant": false, + "id": 124, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2532:5:0", + "nodeType": "VariableDeclaration", + "scope": 156, + "src": "2524:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2524:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 128, + "initialValue": { + "baseExpression": { + "id": 125, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2540:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 127, + "indexExpression": { + "id": 126, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2549:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2540:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2524:28:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2571:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2575:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2571:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 132, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2585:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2571:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "baseExpression": { + "baseExpression": { + "id": 134, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2594:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 136, + "indexExpression": { + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2611:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2594:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 139, + "indexExpression": { + "expression": { + "id": 137, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2618:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2622:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2618:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2594:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2571:58:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f415554484f52495a4544", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2631:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + }, + "value": "NOT_AUTHORIZED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + } + ], + "id": 129, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2563:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 143, + "nodeType": "ExpressionStatement", + "src": "2563:85:0" + }, + { + "expression": { + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 144, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "2659:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 146, + "indexExpression": { + "id": 145, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2671:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2659:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 147, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2659:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "2659:25:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 151, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2709:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 152, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2716:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 153, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2725:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 150, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "2700:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2700:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 155, + "nodeType": "EmitStatement", + "src": "2695:33:0" + } + ] + }, + "functionSelector": "095ea7b3", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2462:7:0", + "parameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2478:7:0", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "2470:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2470:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "id", + "nameLocation": "2495:2:0", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "2487:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2487:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2469:29:0" + }, + "returnParameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [], + "src": "2514:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 181, + "nodeType": "FunctionDefinition", + "src": "2741:203:0", + "nodes": [], + "body": { + "id": 180, + "nodeType": "Block", + "src": "2816:128:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 164, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2826:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 168, + "indexExpression": { + "expression": { + "id": 165, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2843:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2847:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2843:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2826:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 169, + "indexExpression": { + "id": 167, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "2855:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2826:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 170, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2867:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2826:49:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 172, + "nodeType": "ExpressionStatement", + "src": "2826:49:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 174, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2906:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2910:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2906:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 176, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "2918:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 177, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2928:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 173, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "2891:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2891:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 179, + "nodeType": "EmitStatement", + "src": "2886:51:0" + } + ] + }, + "functionSelector": "a22cb465", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "2750:17:0", + "parameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "operator", + "nameLocation": "2776:8:0", + "nodeType": "VariableDeclaration", + "scope": 181, + "src": "2768:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "approved", + "nameLocation": "2791:8:0", + "nodeType": "VariableDeclaration", + "scope": 181, + "src": "2786:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 160, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2786:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2767:33:0" + }, + "returnParameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "2816:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 260, + "nodeType": "FunctionDefinition", + "src": "2950:741:0", + "nodes": [], + "body": { + "id": 259, + "nodeType": "Block", + "src": "3055:636:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 191, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "baseExpression": { + "id": 192, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "3081:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 194, + "indexExpression": { + "id": 193, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3090:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3081:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3073:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "57524f4e475f46524f4d", + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3095:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93", + "typeString": "literal_string \"WRONG_FROM\"" + }, + "value": "WRONG_FROM" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93", + "typeString": "literal_string \"WRONG_FROM\"" + } + ], + "id": 190, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3065:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 198, + "nodeType": "ExpressionStatement", + "src": "3065:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 200, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3127:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3133:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3133:7:0", + "typeDescriptions": {} + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3133:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3127:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "494e56414c49445f524543495049454e54", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3145:19:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + }, + "value": "INVALID_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + } + ], + "id": 199, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3119:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3119:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 208, + "nodeType": "ExpressionStatement", + "src": "3119:46:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 210, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3197:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3201:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3197:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 212, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3211:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3197:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "baseExpression": { + "baseExpression": { + "id": 214, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "3219:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 216, + "indexExpression": { + "id": 215, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3236:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3219:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 219, + "indexExpression": { + "expression": { + "id": 217, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3242:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3246:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3242:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3219:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3197:56:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 221, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3257:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3261:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3257:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "baseExpression": { + "id": 223, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3271:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 225, + "indexExpression": { + "id": 224, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3283:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3271:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3257:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3197:89:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f415554484f52495a4544", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3300:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + }, + "value": "NOT_AUTHORIZED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + } + ], + "id": 209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3176:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3176:150:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "3176:150:0" + }, + { + "id": 241, + "nodeType": "UncheckedBlock", + "src": "3502:84:0", + "statements": [ + { + "expression": { + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "3526:18:0", + "subExpression": { + "baseExpression": { + "id": 231, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3526:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 233, + "indexExpression": { + "id": 232, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3537:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3526:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "3526:18:0" + }, + { + "expression": { + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3559:16:0", + "subExpression": { + "baseExpression": { + "id": 236, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 238, + "indexExpression": { + "id": 237, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3570:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3559:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "3559:16:0" + } + ] + }, + { + "expression": { + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 242, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "3596:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 244, + "indexExpression": { + "id": 243, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3605:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3596:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 245, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3611:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3596:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "3596:17:0" + }, + { + "expression": { + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3624:22:0", + "subExpression": { + "baseExpression": { + "id": 248, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3631:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 250, + "indexExpression": { + "id": 249, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3643:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3631:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 252, + "nodeType": "ExpressionStatement", + "src": "3624:22:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 254, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3671:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 255, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3677:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 256, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3681:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 253, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "3662:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3662:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 258, + "nodeType": "EmitStatement", + "src": "3657:27:0" + } + ] + }, + "functionSelector": "23b872dd", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2959:12:0", + "parameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "from", + "nameLocation": "2989:4:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "2981:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2981:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 185, + "mutability": "mutable", + "name": "to", + "nameLocation": "3011:2:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "3003:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3003:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "id", + "nameLocation": "3031:2:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "3023:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3023:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2971:68:0" + }, + "returnParameters": { + "id": 189, + "nodeType": "ParameterList", + "parameters": [], + "src": "3055:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 300, + "nodeType": "FunctionDefinition", + "src": "3697:396:0", + "nodes": [], + "body": { + "id": 299, + "nodeType": "Block", + "src": "3806:287:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 270, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "3829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 271, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3835:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 272, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 266, + "src": "3839:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 269, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "3816:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3816:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 274, + "nodeType": "ExpressionStatement", + "src": "3816:26:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 276, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3874:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3877:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "3874:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3882:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3874:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3892:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3874:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3954:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3958:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3954:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 287, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "3966:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 288, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 266, + "src": "3972:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3976:2:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 282, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3933:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 281, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3913:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3937:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "3913:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 291, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3999:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4019:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "3999:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4036:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "3999:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3913:131:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3874:170:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4058:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 275, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3853:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3853:233:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 298, + "nodeType": "ExpressionStatement", + "src": "3853:233:0" + } + ] + }, + "functionSelector": "42842e0e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "3706:16:0", + "parameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 262, + "mutability": "mutable", + "name": "from", + "nameLocation": "3740:4:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3732:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3732:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "to", + "nameLocation": "3762:2:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3754:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 263, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3754:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "id", + "nameLocation": "3782:2:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3774:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3722:68:0" + }, + "returnParameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [], + "src": "3806:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 342, + "nodeType": "FunctionDefinition", + "src": "4099:427:0", + "nodes": [], + "body": { + "id": 341, + "nodeType": "Block", + "src": "4237:289:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 312, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "4260:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 313, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4266:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 314, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "4270:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 311, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "4247:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4247:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "4247:26:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 318, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4305:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4308:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4305:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4313:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4305:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4323:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4305:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 327, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4385:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4389:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4385:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 329, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "4397:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 330, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "4403:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 331, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "4407:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 324, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4364:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 323, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4344:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4344:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4368:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "4344:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4344:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 333, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4432:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4452:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "4432:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4469:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "4432:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4344:133:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4305:172:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4491:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 317, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4284:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4284:235:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "4284:235:0" + } + ] + }, + "functionSelector": "b88d4fde", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "4108:16:0", + "parameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "from", + "nameLocation": "4142:4:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4134:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4134:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "to", + "nameLocation": "4164:2:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4156:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4156:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "mutability": "mutable", + "name": "id", + "nameLocation": "4184:2:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4176:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4176:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "mutability": "mutable", + "name": "data", + "nameLocation": "4211:4:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4196:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 307, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4196:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4124:97:0" + }, + "returnParameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [], + "src": "4237:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 362, + "nodeType": "FunctionDefinition", + "src": "4714:335:0", + "nodes": [], + "body": { + "id": 361, + "nodeType": "Block", + "src": "4796:253:0", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 349, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4825:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783031666663396137", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4840:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "src": "4825:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 352, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4900:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783830616335386364", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4915:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "src": "4900:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4825:100:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 356, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4975:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783562356531333966", + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4990:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "src": "4975:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4825:175:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 348, + "id": 360, + "nodeType": "Return", + "src": "4806:194:0" + } + ] + }, + "functionSelector": "01ffc9a7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "4723:17:0", + "parameters": { + "id": 345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 344, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "4748:11:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4741:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 343, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4741:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "4740:20:0" + }, + "returnParameters": { + "id": 348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4790:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 346, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4790:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4789:6:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 413, + "nodeType": "FunctionDefinition", + "src": "5243:371:0", + "nodes": [], + "body": { + "id": 412, + "nodeType": "Block", + "src": "5299:315:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 370, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5317:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5331:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5323:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5323:7:0", + "typeDescriptions": {} + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5323:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5317:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "494e56414c49445f524543495049454e54", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5335:19:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + }, + "value": "INVALID_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + } + ], + "id": 369, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5309:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5309:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 378, + "nodeType": "ExpressionStatement", + "src": "5309:46:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 380, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5374:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 382, + "indexExpression": { + "id": 381, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5383:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5374:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5398:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5390:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5390:7:0", + "typeDescriptions": {} + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5390:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5374:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "414c52454144595f4d494e544544", + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5402:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b", + "typeString": "literal_string \"ALREADY_MINTED\"" + }, + "value": "ALREADY_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b", + "typeString": "literal_string \"ALREADY_MINTED\"" + } + ], + "id": 379, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5366:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5366:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "ExpressionStatement", + "src": "5366:53:0" + }, + { + "id": 396, + "nodeType": "UncheckedBlock", + "src": "5485:51:0", + "statements": [ + { + "expression": { + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5509:16:0", + "subExpression": { + "baseExpression": { + "id": 391, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "5509:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 393, + "indexExpression": { + "id": 392, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5520:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5509:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "5509:16:0" + } + ] + }, + { + "expression": { + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 397, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5546:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 399, + "indexExpression": { + "id": 398, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5555:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5546:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 400, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5561:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5546:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "5546:17:0" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5596:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5588:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5588:7:0", + "typeDescriptions": {} + } + }, + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5588:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 408, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5600:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 409, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5604:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 403, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5579:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5579:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 411, + "nodeType": "EmitStatement", + "src": "5574:33:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "5252:5:0", + "parameters": { + "id": 367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 364, + "mutability": "mutable", + "name": "to", + "nameLocation": "5266:2:0", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "5258:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5258:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "id", + "nameLocation": "5278:2:0", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "5270:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5257:24:0" + }, + "returnParameters": { + "id": 368, + "nodeType": "ParameterList", + "parameters": [], + "src": "5299:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 460, + "nodeType": "FunctionDefinition", + "src": "5620:371:0", + "nodes": [], + "body": { + "id": 459, + "nodeType": "Block", + "src": "5664:327:0", + "nodes": [], + "statements": [ + { + "assignments": [ + 419 + ], + "declarations": [ + { + "constant": false, + "id": 419, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5682:5:0", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5674:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5674:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 423, + "initialValue": { + "baseExpression": { + "id": 420, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5690:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 422, + "indexExpression": { + "id": 421, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5699:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5690:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5674:28:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 425, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5721:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5738:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5730:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5730:7:0", + "typeDescriptions": {} + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5730:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5721:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f4d494e544544", + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5742:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + }, + "value": "NOT_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + } + ], + "id": 424, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5713:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5713:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 433, + "nodeType": "ExpressionStatement", + "src": "5713:42:0" + }, + { + "id": 439, + "nodeType": "UncheckedBlock", + "src": "5821:54:0", + "statements": [ + { + "expression": { + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "5845:19:0", + "subExpression": { + "baseExpression": { + "id": 434, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "5845:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 436, + "indexExpression": { + "id": 435, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5856:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5845:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 438, + "nodeType": "ExpressionStatement", + "src": "5845:19:0" + } + ] + }, + { + "expression": { + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "5885:19:0", + "subExpression": { + "baseExpression": { + "id": 440, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5892:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 442, + "indexExpression": { + "id": 441, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5901:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5892:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 444, + "nodeType": "ExpressionStatement", + "src": "5885:19:0" + }, + { + "expression": { + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "5915:22:0", + "subExpression": { + "baseExpression": { + "id": 445, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "5922:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 447, + "indexExpression": { + "id": 446, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5934:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5922:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 449, + "nodeType": "ExpressionStatement", + "src": "5915:22:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 451, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5962:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5977:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5969:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5969:7:0", + "typeDescriptions": {} + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5969:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 456, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5981:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 450, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5953:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5953:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 458, + "nodeType": "EmitStatement", + "src": "5948:36:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "5629:5:0", + "parameters": { + "id": 416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 415, + "mutability": "mutable", + "name": "id", + "nameLocation": "5643:2:0", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "5635:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5635:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5634:12:0" + }, + "returnParameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [], + "src": "5664:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 500, + "nodeType": "FunctionDefinition", + "src": "6185:340:0", + "nodes": [], + "body": { + "id": 499, + "nodeType": "Block", + "src": "6245:280:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 468, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6261:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 469, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6265:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 467, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "6255:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6255:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 471, + "nodeType": "ExpressionStatement", + "src": "6255:13:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 473, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6300:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6303:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6300:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6308:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6300:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6300:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 482, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6380:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6384:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6380:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6400:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6392:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6392:7:0", + "typeDescriptions": {} + } + }, + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6392:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 488, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6404:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6408:2:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 479, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6359:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 478, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6339:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6339:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6363:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6339:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6339:72:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 491, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6431:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6451:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6431:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6468:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6431:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "6339:137:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6300:176:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6490:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6279:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6279:239:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 498, + "nodeType": "ExpressionStatement", + "src": "6279:239:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "6194:9:0", + "parameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "to", + "nameLocation": "6212:2:0", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "6204:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "id", + "nameLocation": "6224:2:0", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "6216:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6216:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6203:24:0" + }, + "returnParameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [], + "src": "6245:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 542, + "nodeType": "FunctionDefinition", + "src": "6531:391:0", + "nodes": [], + "body": { + "id": 541, + "nodeType": "Block", + "src": "6640:282:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 510, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6656:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 511, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "6660:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 509, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "6650:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6650:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 513, + "nodeType": "ExpressionStatement", + "src": "6650:13:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 515, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6695:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6698:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6695:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6703:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6695:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6713:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6695:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 524, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6775:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6779:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6775:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6795:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6787:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6787:7:0", + "typeDescriptions": {} + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6787:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 530, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "6799:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 531, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "6803:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6754:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6734:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6734:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6758:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6734:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6734:74:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 533, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6828:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6848:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6828:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6865:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6828:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "6734:139:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6695:178:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6887:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 514, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6674:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6674:241:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "6674:241:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "6540:9:0", + "parameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 502, + "mutability": "mutable", + "name": "to", + "nameLocation": "6567:2:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6559:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6559:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "mutability": "mutable", + "name": "id", + "nameLocation": "6587:2:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6579:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6579:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "mutability": "mutable", + "name": "data", + "nameLocation": "6612:4:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6599:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 505, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6599:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6549:73:0" + }, + "returnParameters": { + "id": 508, + "nodeType": "ParameterList", + "parameters": [], + "src": "6640:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC721", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "68:171:0", + "text": "@notice Modern, minimalist, and gas efficient ERC-721 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)" + }, + "fullyImplemented": false, + "linearizedBaseContracts": [ + 543 + ], + "name": "ERC721", + "nameLocation": "257:6:0", + "scope": 564, + "usedErrors": [] + }, + { + "id": 563, + "nodeType": "ContractDefinition", + "src": "7108:256:0", + "nodes": [ + { + "id": 562, + "nodeType": "FunctionDefinition", + "src": "7152:210:0", + "nodes": [], + "body": { + "id": 561, + "nodeType": "Block", + "src": "7293:69:0", + "nodes": [], + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 557, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "7310:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7330:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "7310:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7347:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7310:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 556, + "id": 560, + "nodeType": "Return", + "src": "7303:52:0" + } + ] + }, + "functionSelector": "150b7a02", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "7161:16:0", + "parameters": { + "id": 553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7187:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7187:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7204:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7221:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7221:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7238:14:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 551, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7238:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7177:81:0" + }, + "returnParameters": { + "id": 556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 555, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7285:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 554, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7285:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "7284:8:0" + }, + "scope": 563, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + } + ], + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC721TokenReceiver", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 544, + "nodeType": "StructuredDocumentation", + "src": "6926:182:0", + "text": "@notice A generic interface for a contract which properly accepts ERC721 tokens.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 563 + ], + "name": "ERC721TokenReceiver", + "nameLocation": "7126:19:0", + "scope": 564, + "usedErrors": [] + } + ], + "license": "AGPL-3.0-only" + }, + "id": 0 +} as const; + +export const ERC721 = { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Modern, minimalist, and gas efficient ERC-721 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"../../node_modules/solmate/src/tokens/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"../../node_modules/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ApprovalForAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalForAll" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "../../node_modules/solmate/src/tokens/ERC721.sol": "ERC721" + }, + "libraries": {} + }, + "sources": { + "../../node_modules/solmate/src/tokens/ERC721.sol": { + "keccak256": "0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d", + "urls": [ + "bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403", + "dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK" + ], + "license": "AGPL-3.0-only" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "../../node_modules/solmate/src/tokens/ERC721.sol", + "id": 564, + "exportedSymbols": { + "ERC721": [ + 543 + ], + "ERC721TokenReceiver": [ + 563 + ] + }, + "nodeType": "SourceUnit", + "src": "42:7323:0", + "nodes": [ + { + "id": 1, + "nodeType": "PragmaDirective", + "src": "42:24:0", + "nodes": [], + "literals": [ + "solidity", + ">=", + "0.8", + ".0" + ] + }, + { + "id": 543, + "nodeType": "ContractDefinition", + "src": "239:6685:0", + "nodes": [ + { + "id": 10, + "nodeType": "EventDefinition", + "src": "449:77:0", + "nodes": [], + "anonymous": false, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "nameLocation": "455:8:0", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "480:4:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "464:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "464:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "502:2:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "486:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "486:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "522:2:0", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "506:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "506:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "463:62:0" + } + }, + { + "id": 18, + "nodeType": "EventDefinition", + "src": "532:83:0", + "nodes": [], + "anonymous": false, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "nameLocation": "538:8:0", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "563:5:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "547:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "547:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "586:7:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "570:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "570:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nameLocation": "611:2:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "595:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "595:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "546:68:0" + } + }, + { + "id": 26, + "nodeType": "EventDefinition", + "src": "621:85:0", + "nodes": [], + "anonymous": false, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "name": "ApprovalForAll", + "nameLocation": "627:14:0", + "parameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "658:5:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "642:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "642:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "681:8:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "665:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "665:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "696:8:0", + "nodeType": "VariableDeclaration", + "scope": 26, + "src": "691:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 23, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "691:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "641:64:0" + } + }, + { + "id": 28, + "nodeType": "VariableDeclaration", + "src": "899:18:0", + "nodes": [], + "constant": false, + "functionSelector": "06fdde03", + "mutability": "mutable", + "name": "name", + "nameLocation": "913:4:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 27, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "899:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 30, + "nodeType": "VariableDeclaration", + "src": "924:20:0", + "nodes": [], + "constant": false, + "functionSelector": "95d89b41", + "mutability": "mutable", + "name": "symbol", + "nameLocation": "938:6:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "924:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "public" + }, + { + "id": 37, + "nodeType": "FunctionDefinition", + "src": "951:74:0", + "nodes": [], + "functionSelector": "c87b56dd", + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "960:8:0", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 32, + "mutability": "mutable", + "name": "id", + "nameLocation": "977:2:0", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "969:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 31, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "969:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "968:12:0" + }, + "returnParameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "1010:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 34, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1010:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1009:15:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 41, + "nodeType": "VariableDeclaration", + "src": "1221:45:0", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_ownerOf", + "nameLocation": "1258:8:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 40, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 38, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1229:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1221:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1240:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "id": 45, + "nodeType": "VariableDeclaration", + "src": "1273:47:0", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_balanceOf", + "nameLocation": "1310:10:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 44, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1281:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1273:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 43, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1292:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "id": 68, + "nodeType": "FunctionDefinition", + "src": "1327:149:0", + "nodes": [], + "body": { + "id": 67, + "nodeType": "Block", + "src": "1400:76:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 53, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50, + "src": "1419:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 54, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "1427:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 56, + "indexExpression": { + "id": 55, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "1436:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1427:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1419:20:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 58, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1418:22:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1452:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 59, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1444:7:0", + "typeDescriptions": {} + } + }, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1444:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1418:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f4d494e544544", + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1456:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + }, + "value": "NOT_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + } + ], + "id": 52, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1410:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1410:59:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66, + "nodeType": "ExpressionStatement", + "src": "1410:59:0" + } + ] + }, + "functionSelector": "6352211e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1336:7:0", + "parameters": { + "id": 48, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "id", + "nameLocation": "1352:2:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "1344:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1344:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1343:12:0" + }, + "returnParameters": { + "id": 51, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1393:5:0", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "1385:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 49, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1385:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1384:15:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 90, + "nodeType": "FunctionDefinition", + "src": "1482:168:0", + "nodes": [], + "body": { + "id": 89, + "nodeType": "Block", + "src": "1554:96:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 76, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1572:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1589:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1581:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 77, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1581:7:0", + "typeDescriptions": {} + } + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1581:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1572:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5a45524f5f41444452455353", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1593:14:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af", + "typeString": "literal_string \"ZERO_ADDRESS\"" + }, + "value": "ZERO_ADDRESS" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af", + "typeString": "literal_string \"ZERO_ADDRESS\"" + } + ], + "id": 75, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1564:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1564:44:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "1564:44:0" + }, + { + "expression": { + "baseExpression": { + "id": 85, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "1626:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 87, + "indexExpression": { + "id": 86, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "1637:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1626:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 74, + "id": 88, + "nodeType": "Return", + "src": "1619:24:0" + } + ] + }, + "functionSelector": "70a08231", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "1491:9:0", + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1509:5:0", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "1501:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 69, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1501:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1500:15:0" + }, + "returnParameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "1545:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 72, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1545:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1544:9:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 94, + "nodeType": "VariableDeclaration", + "src": "1844:46:0", + "nodes": [], + "constant": false, + "functionSelector": "081812fc", + "mutability": "mutable", + "name": "getApproved", + "nameLocation": "1879:11:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 93, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 91, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1852:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1844:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1863:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "public" + }, + { + "id": 100, + "nodeType": "VariableDeclaration", + "src": "1897:68:0", + "nodes": [], + "constant": false, + "functionSelector": "e985e9c5", + "mutability": "mutable", + "name": "isApprovedForAll", + "nameLocation": "1949:16:0", + "scope": 543, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 99, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1897:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 98, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 96, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1916:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 97, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "visibility": "public" + }, + { + "id": 116, + "nodeType": "FunctionDefinition", + "src": "2154:111:0", + "nodes": [], + "body": { + "id": 115, + "nodeType": "Block", + "src": "2210:55:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 107, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "2220:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 108, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2227:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2220:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 110, + "nodeType": "ExpressionStatement", + "src": "2220:12:0" + }, + { + "expression": { + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 111, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2242:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 112, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2251:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2242:16:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 114, + "nodeType": "ExpressionStatement", + "src": "2242:16:0" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "_name", + "nameLocation": "2180:5:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "2166:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 101, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2166:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "2201:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "2187:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 103, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2187:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2165:44:0" + }, + "returnParameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [], + "src": "2210:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 157, + "nodeType": "FunctionDefinition", + "src": "2453:282:0", + "nodes": [], + "body": { + "id": 156, + "nodeType": "Block", + "src": "2514:221:0", + "nodes": [], + "statements": [ + { + "assignments": [ + 124 + ], + "declarations": [ + { + "constant": false, + "id": 124, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2532:5:0", + "nodeType": "VariableDeclaration", + "scope": 156, + "src": "2524:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2524:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 128, + "initialValue": { + "baseExpression": { + "id": 125, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "2540:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 127, + "indexExpression": { + "id": 126, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2549:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2540:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2524:28:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2571:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2575:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2571:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 132, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2585:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2571:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "baseExpression": { + "baseExpression": { + "id": 134, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2594:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 136, + "indexExpression": { + "id": 135, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2611:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2594:23:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 139, + "indexExpression": { + "expression": { + "id": 137, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2618:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2622:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2618:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2594:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2571:58:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f415554484f52495a4544", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2631:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + }, + "value": "NOT_AUTHORIZED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + } + ], + "id": 129, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2563:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:85:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 143, + "nodeType": "ExpressionStatement", + "src": "2563:85:0" + }, + { + "expression": { + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 144, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "2659:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 146, + "indexExpression": { + "id": 145, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2671:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2659:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 147, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2659:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "2659:25:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 151, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "2709:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 152, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "2716:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 153, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "2725:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 150, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "2700:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2700:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 155, + "nodeType": "EmitStatement", + "src": "2695:33:0" + } + ] + }, + "functionSelector": "095ea7b3", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2462:7:0", + "parameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2478:7:0", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "2470:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2470:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "id", + "nameLocation": "2495:2:0", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "2487:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2487:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2469:29:0" + }, + "returnParameters": { + "id": 122, + "nodeType": "ParameterList", + "parameters": [], + "src": "2514:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 181, + "nodeType": "FunctionDefinition", + "src": "2741:203:0", + "nodes": [], + "body": { + "id": 180, + "nodeType": "Block", + "src": "2816:128:0", + "nodes": [], + "statements": [ + { + "expression": { + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 164, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2826:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 168, + "indexExpression": { + "expression": { + "id": 165, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2843:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2847:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2843:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2826:28:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 169, + "indexExpression": { + "id": 167, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "2855:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2826:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 170, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2867:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2826:49:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 172, + "nodeType": "ExpressionStatement", + "src": "2826:49:0" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 174, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2906:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2910:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2906:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 176, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 159, + "src": "2918:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 177, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2928:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 173, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "2891:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2891:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 179, + "nodeType": "EmitStatement", + "src": "2886:51:0" + } + ] + }, + "functionSelector": "a22cb465", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "2750:17:0", + "parameters": { + "id": 162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "operator", + "nameLocation": "2776:8:0", + "nodeType": "VariableDeclaration", + "scope": 181, + "src": "2768:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 161, + "mutability": "mutable", + "name": "approved", + "nameLocation": "2791:8:0", + "nodeType": "VariableDeclaration", + "scope": 181, + "src": "2786:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 160, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2786:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2767:33:0" + }, + "returnParameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [], + "src": "2816:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 260, + "nodeType": "FunctionDefinition", + "src": "2950:741:0", + "nodes": [], + "body": { + "id": 259, + "nodeType": "Block", + "src": "3055:636:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 191, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "baseExpression": { + "id": 192, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "3081:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 194, + "indexExpression": { + "id": 193, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3090:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3081:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3073:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "57524f4e475f46524f4d", + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3095:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93", + "typeString": "literal_string \"WRONG_FROM\"" + }, + "value": "WRONG_FROM" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f70366941d4d371c05a2457cbc0f4d05a3d6bc57ab01a7c3338bfed233eebe93", + "typeString": "literal_string \"WRONG_FROM\"" + } + ], + "id": 190, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3065:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 198, + "nodeType": "ExpressionStatement", + "src": "3065:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 200, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3127:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3141:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3133:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3133:7:0", + "typeDescriptions": {} + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3133:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3127:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "494e56414c49445f524543495049454e54", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3145:19:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + }, + "value": "INVALID_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + } + ], + "id": 199, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3119:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3119:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 208, + "nodeType": "ExpressionStatement", + "src": "3119:46:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 210, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3197:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3201:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3197:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 212, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3211:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3197:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "baseExpression": { + "baseExpression": { + "id": 214, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "3219:16:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 216, + "indexExpression": { + "id": 215, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3236:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3219:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 219, + "indexExpression": { + "expression": { + "id": 217, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3242:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3246:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3242:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3219:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3197:56:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 221, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3257:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3261:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3257:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "baseExpression": { + "id": 223, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3271:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 225, + "indexExpression": { + "id": 224, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3283:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3271:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3257:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3197:89:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f415554484f52495a4544", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3300:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + }, + "value": "NOT_AUTHORIZED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7e213d5e2bee0acc2c7bf8bfda19ef0cae82e7b8c997e7e898919269971e7c4", + "typeString": "literal_string \"NOT_AUTHORIZED\"" + } + ], + "id": 209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3176:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3176:150:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "3176:150:0" + }, + { + "id": 241, + "nodeType": "UncheckedBlock", + "src": "3502:84:0", + "statements": [ + { + "expression": { + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "3526:18:0", + "subExpression": { + "baseExpression": { + "id": 231, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3526:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 233, + "indexExpression": { + "id": 232, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3537:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3526:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "3526:18:0" + }, + { + "expression": { + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3559:16:0", + "subExpression": { + "baseExpression": { + "id": 236, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "3559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 238, + "indexExpression": { + "id": 237, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3570:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3559:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "3559:16:0" + } + ] + }, + { + "expression": { + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 242, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "3596:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 244, + "indexExpression": { + "id": 243, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3605:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3596:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 245, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3611:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3596:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "3596:17:0" + }, + { + "expression": { + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3624:22:0", + "subExpression": { + "baseExpression": { + "id": 248, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3631:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 250, + "indexExpression": { + "id": 249, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3643:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3631:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 252, + "nodeType": "ExpressionStatement", + "src": "3624:22:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 254, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 183, + "src": "3671:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 255, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 185, + "src": "3677:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 256, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "3681:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 253, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "3662:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3662:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 258, + "nodeType": "EmitStatement", + "src": "3657:27:0" + } + ] + }, + "functionSelector": "23b872dd", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2959:12:0", + "parameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "from", + "nameLocation": "2989:4:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "2981:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2981:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 185, + "mutability": "mutable", + "name": "to", + "nameLocation": "3011:2:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "3003:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3003:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "id", + "nameLocation": "3031:2:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "3023:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3023:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2971:68:0" + }, + "returnParameters": { + "id": 189, + "nodeType": "ParameterList", + "parameters": [], + "src": "3055:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 300, + "nodeType": "FunctionDefinition", + "src": "3697:396:0", + "nodes": [], + "body": { + "id": 299, + "nodeType": "Block", + "src": "3806:287:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 270, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "3829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 271, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3835:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 272, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 266, + "src": "3839:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 269, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "3816:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3816:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 274, + "nodeType": "ExpressionStatement", + "src": "3816:26:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 276, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3874:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3877:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "3874:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3882:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3874:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3892:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3874:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 285, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3954:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3958:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3954:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 287, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "3966:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 288, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 266, + "src": "3972:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3976:2:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 282, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 264, + "src": "3933:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 281, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3913:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3937:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "3913:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 291, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3999:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4019:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "3999:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4036:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "3999:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3913:131:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3874:170:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4058:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 275, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3853:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3853:233:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 298, + "nodeType": "ExpressionStatement", + "src": "3853:233:0" + } + ] + }, + "functionSelector": "42842e0e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "3706:16:0", + "parameters": { + "id": 267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 262, + "mutability": "mutable", + "name": "from", + "nameLocation": "3740:4:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3732:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3732:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "to", + "nameLocation": "3762:2:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3754:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 263, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3754:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 266, + "mutability": "mutable", + "name": "id", + "nameLocation": "3782:2:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "3774:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3774:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3722:68:0" + }, + "returnParameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [], + "src": "3806:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 342, + "nodeType": "FunctionDefinition", + "src": "4099:427:0", + "nodes": [], + "body": { + "id": 341, + "nodeType": "Block", + "src": "4237:289:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 312, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "4260:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 313, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4266:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 314, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "4270:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 311, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "4247:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4247:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 316, + "nodeType": "ExpressionStatement", + "src": "4247:26:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 318, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4305:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4308:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4305:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4313:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4305:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4323:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4305:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 327, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4385:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4389:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4385:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 329, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 302, + "src": "4397:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 330, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 306, + "src": "4403:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 331, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 308, + "src": "4407:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "expression": { + "arguments": [ + { + "id": 324, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 304, + "src": "4364:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 323, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4344:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4344:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4368:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "4344:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4344:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 333, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4432:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4452:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "4432:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4469:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "4432:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4344:133:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4305:172:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4491:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 317, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4284:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4284:235:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "4284:235:0" + } + ] + }, + "functionSelector": "b88d4fde", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "4108:16:0", + "parameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 302, + "mutability": "mutable", + "name": "from", + "nameLocation": "4142:4:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4134:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 301, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4134:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "to", + "nameLocation": "4164:2:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4156:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4156:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 306, + "mutability": "mutable", + "name": "id", + "nameLocation": "4184:2:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4176:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 305, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4176:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 308, + "mutability": "mutable", + "name": "data", + "nameLocation": "4211:4:0", + "nodeType": "VariableDeclaration", + "scope": 342, + "src": "4196:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 307, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4196:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4124:97:0" + }, + "returnParameters": { + "id": 310, + "nodeType": "ParameterList", + "parameters": [], + "src": "4237:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 362, + "nodeType": "FunctionDefinition", + "src": "4714:335:0", + "nodes": [], + "body": { + "id": 361, + "nodeType": "Block", + "src": "4796:253:0", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 349, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4825:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783031666663396137", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4840:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "src": "4825:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 352, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4900:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783830616335386364", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4915:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "src": "4900:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4825:100:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 356, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 344, + "src": "4975:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30783562356531333966", + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4990:10:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "src": "4975:25:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4825:175:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 348, + "id": 360, + "nodeType": "Return", + "src": "4806:194:0" + } + ] + }, + "functionSelector": "01ffc9a7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "4723:17:0", + "parameters": { + "id": 345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 344, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "4748:11:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4741:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 343, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4741:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "4740:20:0" + }, + "returnParameters": { + "id": 348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "4790:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 346, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4790:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4789:6:0" + }, + "scope": 543, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 413, + "nodeType": "FunctionDefinition", + "src": "5243:371:0", + "nodes": [], + "body": { + "id": 412, + "nodeType": "Block", + "src": "5299:315:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 370, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5317:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5331:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5323:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 371, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5323:7:0", + "typeDescriptions": {} + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5323:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5317:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "494e56414c49445f524543495049454e54", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5335:19:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + }, + "value": "INVALID_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5e7bf34c5f9e77c6f415365fc02ea1195419ccebda18d14265f0c098f3687483", + "typeString": "literal_string \"INVALID_RECIPIENT\"" + } + ], + "id": 369, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5309:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5309:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 378, + "nodeType": "ExpressionStatement", + "src": "5309:46:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 380, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5374:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 382, + "indexExpression": { + "id": 381, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5383:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5374:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5398:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5390:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5390:7:0", + "typeDescriptions": {} + } + }, + "id": 386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5390:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5374:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "414c52454144595f4d494e544544", + "id": 388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5402:16:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b", + "typeString": "literal_string \"ALREADY_MINTED\"" + }, + "value": "ALREADY_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b", + "typeString": "literal_string \"ALREADY_MINTED\"" + } + ], + "id": 379, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5366:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5366:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 390, + "nodeType": "ExpressionStatement", + "src": "5366:53:0" + }, + { + "id": 396, + "nodeType": "UncheckedBlock", + "src": "5485:51:0", + "statements": [ + { + "expression": { + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5509:16:0", + "subExpression": { + "baseExpression": { + "id": 391, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "5509:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 393, + "indexExpression": { + "id": 392, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5520:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5509:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 395, + "nodeType": "ExpressionStatement", + "src": "5509:16:0" + } + ] + }, + { + "expression": { + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 397, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5546:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 399, + "indexExpression": { + "id": 398, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5555:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5546:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 400, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5561:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5546:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "5546:17:0" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5596:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5588:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5588:7:0", + "typeDescriptions": {} + } + }, + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5588:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 408, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "5600:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 409, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "5604:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 403, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5579:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5579:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 411, + "nodeType": "EmitStatement", + "src": "5574:33:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "5252:5:0", + "parameters": { + "id": 367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 364, + "mutability": "mutable", + "name": "to", + "nameLocation": "5266:2:0", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "5258:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5258:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 366, + "mutability": "mutable", + "name": "id", + "nameLocation": "5278:2:0", + "nodeType": "VariableDeclaration", + "scope": 413, + "src": "5270:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5270:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5257:24:0" + }, + "returnParameters": { + "id": 368, + "nodeType": "ParameterList", + "parameters": [], + "src": "5299:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 460, + "nodeType": "FunctionDefinition", + "src": "5620:371:0", + "nodes": [], + "body": { + "id": 459, + "nodeType": "Block", + "src": "5664:327:0", + "nodes": [], + "statements": [ + { + "assignments": [ + 419 + ], + "declarations": [ + { + "constant": false, + "id": 419, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5682:5:0", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "5674:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5674:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 423, + "initialValue": { + "baseExpression": { + "id": 420, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5690:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 422, + "indexExpression": { + "id": 421, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5699:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5690:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5674:28:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 425, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5721:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5738:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5730:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 426, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5730:7:0", + "typeDescriptions": {} + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5730:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5721:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e4f545f4d494e544544", + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5742:12:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + }, + "value": "NOT_MINTED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca", + "typeString": "literal_string \"NOT_MINTED\"" + } + ], + "id": 424, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5713:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5713:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 433, + "nodeType": "ExpressionStatement", + "src": "5713:42:0" + }, + { + "id": 439, + "nodeType": "UncheckedBlock", + "src": "5821:54:0", + "statements": [ + { + "expression": { + "id": 437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "5845:19:0", + "subExpression": { + "baseExpression": { + "id": 434, + "name": "_balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "5845:10:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 436, + "indexExpression": { + "id": 435, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5856:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5845:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 438, + "nodeType": "ExpressionStatement", + "src": "5845:19:0" + } + ] + }, + { + "expression": { + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "5885:19:0", + "subExpression": { + "baseExpression": { + "id": 440, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41, + "src": "5892:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 442, + "indexExpression": { + "id": 441, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5901:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5892:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 444, + "nodeType": "ExpressionStatement", + "src": "5885:19:0" + }, + { + "expression": { + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "5915:22:0", + "subExpression": { + "baseExpression": { + "id": 445, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "5922:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 447, + "indexExpression": { + "id": 446, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5934:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5922:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 449, + "nodeType": "ExpressionStatement", + "src": "5915:22:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 451, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "5962:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5977:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5969:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5969:7:0", + "typeDescriptions": {} + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5969:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 456, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 415, + "src": "5981:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 450, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "5953:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5953:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 458, + "nodeType": "EmitStatement", + "src": "5948:36:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "5629:5:0", + "parameters": { + "id": 416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 415, + "mutability": "mutable", + "name": "id", + "nameLocation": "5643:2:0", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "5635:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5635:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5634:12:0" + }, + "returnParameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [], + "src": "5664:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 500, + "nodeType": "FunctionDefinition", + "src": "6185:340:0", + "nodes": [], + "body": { + "id": 499, + "nodeType": "Block", + "src": "6245:280:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 468, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6261:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 469, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6265:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 467, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "6255:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6255:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 471, + "nodeType": "ExpressionStatement", + "src": "6255:13:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 473, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6300:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6303:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6300:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6308:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6300:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6300:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 482, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6380:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6384:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6380:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6400:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6392:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6392:7:0", + "typeDescriptions": {} + } + }, + "id": 487, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6392:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 488, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "6404:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6408:2:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "arguments": [ + { + "id": 479, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "6359:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 478, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6339:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6339:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6363:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6339:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6339:72:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 491, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6431:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6451:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6431:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6468:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6431:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "6339:137:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6300:176:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6490:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6279:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6279:239:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 498, + "nodeType": "ExpressionStatement", + "src": "6279:239:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "6194:9:0", + "parameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "to", + "nameLocation": "6212:2:0", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "6204:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "mutability": "mutable", + "name": "id", + "nameLocation": "6224:2:0", + "nodeType": "VariableDeclaration", + "scope": 500, + "src": "6216:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6216:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6203:24:0" + }, + "returnParameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [], + "src": "6245:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "id": 542, + "nodeType": "FunctionDefinition", + "src": "6531:391:0", + "nodes": [], + "body": { + "id": 541, + "nodeType": "Block", + "src": "6640:282:0", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 510, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6656:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 511, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "6660:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 509, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "6650:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6650:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 513, + "nodeType": "ExpressionStatement", + "src": "6650:13:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 515, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6695:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6698:4:0", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6695:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6703:6:0", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6695:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6713:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6695:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 524, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6775:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6779:6:0", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "6775:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6795:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6787:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6787:7:0", + "typeDescriptions": {} + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6787:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 530, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "6799:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 531, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "6803:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "6754:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 520, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6734:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6734:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721TokenReceiver_$563", + "typeString": "contract ERC721TokenReceiver" + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6758:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6734:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6734:74:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 533, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6828:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6848:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "6828:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6865:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6828:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "6734:139:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6695:178:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "554e534146455f524543495049454e54", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6887:18:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + }, + "value": "UNSAFE_RECIPIENT" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91aca405bce635db2380c779628055bea528973696064aeec59f909f41accf6d", + "typeString": "literal_string \"UNSAFE_RECIPIENT\"" + } + ], + "id": 514, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6674:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6674:241:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "6674:241:0" + } + ] + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "6540:9:0", + "parameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 502, + "mutability": "mutable", + "name": "to", + "nameLocation": "6567:2:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6559:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 501, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6559:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "mutability": "mutable", + "name": "id", + "nameLocation": "6587:2:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6579:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6579:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "mutability": "mutable", + "name": "data", + "nameLocation": "6612:4:0", + "nodeType": "VariableDeclaration", + "scope": 542, + "src": "6599:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 505, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6599:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6549:73:0" + }, + "returnParameters": { + "id": 508, + "nodeType": "ParameterList", + "parameters": [], + "src": "6640:0:0" + }, + "scope": 543, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC721", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2, + "nodeType": "StructuredDocumentation", + "src": "68:171:0", + "text": "@notice Modern, minimalist, and gas efficient ERC-721 implementation.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)" + }, + "fullyImplemented": false, + "linearizedBaseContracts": [ + 543 + ], + "name": "ERC721", + "nameLocation": "257:6:0", + "scope": 564, + "usedErrors": [] + }, + { + "id": 563, + "nodeType": "ContractDefinition", + "src": "7108:256:0", + "nodes": [ + { + "id": 562, + "nodeType": "FunctionDefinition", + "src": "7152:210:0", + "nodes": [], + "body": { + "id": 561, + "nodeType": "Block", + "src": "7293:69:0", + "nodes": [], + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 557, + "name": "ERC721TokenReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "7310:19:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721TokenReceiver_$563_$", + "typeString": "type(contract ERC721TokenReceiver)" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7330:16:0", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 562, + "src": "7310:36:0", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function ERC721TokenReceiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7347:8:0", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "7310:45:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 556, + "id": 560, + "nodeType": "Return", + "src": "7303:52:0" + } + ] + }, + "functionSelector": "150b7a02", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "7161:16:0", + "parameters": { + "id": 553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7187:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7187:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7204:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 547, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7221:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 549, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7221:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7238:14:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 551, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7238:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7177:81:0" + }, + "returnParameters": { + "id": 556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 555, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 562, + "src": "7285:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 554, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7285:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "7284:8:0" + }, + "scope": 563, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + } + ], + "abstract": true, + "baseContracts": [], + "canonicalName": "ERC721TokenReceiver", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 544, + "nodeType": "StructuredDocumentation", + "src": "6926:182:0", + "text": "@notice A generic interface for a contract which properly accepts ERC721 tokens.\n @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 563 + ], + "name": "ERC721TokenReceiver", + "nameLocation": "7126:19:0", + "scope": 564, + "usedErrors": [] + } + ], + "license": "AGPL-3.0-only" + }, + "id": 0 +} as const; + +export const MockERC721 = { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b50604051620013a8380380620013a8833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110b080620002f86000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a2578063a144819411610071578063a14481941461023e578063a22cb46514610251578063b88d4fde14610264578063c87b56dd14610277578063e985e9c51461028b57600080fd5b80636352211e146101ef57806370a08231146102025780638832e6e31461022357806395d89b411461023657600080fd5b806323b872dd116100de57806323b872dd146101a357806340c10f19146101b657806342842e0e146101c957806342966c68146101dc57600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b31461018e575b600080fd5b61012361011e366004610c4f565b6102b9565b60405190151581526020015b60405180910390f35b61014061030b565b60405161012f9190610cb9565b61017661015b366004610ccc565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b6101a161019c366004610cfc565b610399565b005b6101a16101b1366004610d26565b610480565b6101a16101c4366004610cfc565b610647565b6101a16101d7366004610d26565b610655565b6101a16101ea366004610ccc565b61072b565b6101766101fd366004610ccc565b610737565b610215610210366004610d62565b61078e565b60405190815260200161012f565b6101a1610231366004610d93565b6107f1565b6101406107fc565b6101a161024c366004610cfc565b610809565b6101a161025f366004610e5e565b610813565b6101a1610272366004610e9a565b61087f565b610140610285366004610ccc565b50606090565b610123610299366004610f35565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806102ea57506380ac58cd60e01b6001600160e01b03198316145b806103055750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461031890610f68565b80601f016020809104026020016040519081016040528092919081815260200182805461034490610f68565b80156103915780601f1061036657610100808354040283529160200191610391565b820191906000526020600020905b81548152906001019060200180831161037457829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806103e257506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104245760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146104d65760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161041b565b6001600160a01b0382166105205760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161041b565b336001600160a01b038416148061055a57506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061057b57506000818152600460205260409020546001600160a01b031633145b6105b85760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161041b565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106518282610944565b5050565b610660838383610480565b6001600160a01b0382163b158061070a5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4015b6020604051808303816000875af11580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe9190610fa2565b6001600160e01b031916145b6107265760405162461bcd60e51b815260040161041b90610fbf565b505050565b61073481610a4f565b50565b6000818152600260205260409020546001600160a01b0316806107895760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161041b565b919050565b60006001600160a01b0382166107d55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161041b565b506001600160a01b031660009081526003602052604090205490565b610726838383610b1c565b6001805461031890610f68565b6106518282610b6d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61088a858585610480565b6001600160a01b0384163b15806109215750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906108d29033908a90899089908990600401610fe9565b6020604051808303816000875af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190610fa2565b6001600160e01b031916145b61093d5760405162461bcd60e51b815260040161041b90610fbf565b5050505050565b6001600160a01b03821661098e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161041b565b6000818152600260205260409020546001600160a01b0316156109e45760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161041b565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b031680610aa15760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161041b565b6001600160a01b038116600081815260036020908152604080832080546000190190558583526002825280832080546001600160a01b031990811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b610b268383610944565b6001600160a01b0383163b158061070a5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906106bb9033906000908890889060040161103d565b610b778282610944565b6001600160a01b0382163b1580610c1d5750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af1158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c119190610fa2565b6001600160e01b031916145b6106515760405162461bcd60e51b815260040161041b90610fbf565b6001600160e01b03198116811461073457600080fd5b600060208284031215610c6157600080fd5b8135610c6c81610c39565b9392505050565b6000815180845260005b81811015610c9957602081850181015186830182015201610c7d565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c6c6020830184610c73565b600060208284031215610cde57600080fd5b5035919050565b80356001600160a01b038116811461078957600080fd5b60008060408385031215610d0f57600080fd5b610d1883610ce5565b946020939093013593505050565b600080600060608486031215610d3b57600080fd5b610d4484610ce5565b9250610d5260208501610ce5565b9150604084013590509250925092565b600060208284031215610d7457600080fd5b610c6c82610ce5565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610da857600080fd5b610db184610ce5565b925060208401359150604084013567ffffffffffffffff80821115610dd557600080fd5b818601915086601f830112610de957600080fd5b813581811115610dfb57610dfb610d7d565b604051601f8201601f19908116603f01168101908382118183101715610e2357610e23610d7d565b81604052828152896020848701011115610e3c57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060408385031215610e7157600080fd5b610e7a83610ce5565b915060208301358015158114610e8f57600080fd5b809150509250929050565b600080600080600060808688031215610eb257600080fd5b610ebb86610ce5565b9450610ec960208701610ce5565b935060408601359250606086013567ffffffffffffffff80821115610eed57600080fd5b818801915088601f830112610f0157600080fd5b813581811115610f1057600080fd5b896020828501011115610f2257600080fd5b9699959850939650602001949392505050565b60008060408385031215610f4857600080fd5b610f5183610ce5565b9150610f5f60208401610ce5565b90509250929050565b600181811c90821680610f7c57607f821691505b602082108103610f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610fb457600080fd5b8151610c6c81610c39565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061107090830184610c73565b969550505050505056fea2646970667358221220fa41b60423a8dd16cc634f3f2727cf8eefe7287de26a5d031ccd040e1849a4b664736f6c63430008120033", + "sourceMap": "113:694:1:-:0;;;149:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;234:5;241:7;2220:4:0;:12;234:5:1;2220:4:0;:12;:::i;:::-;-1:-1:-1;2242:6:0;:16;2251:7;2242:6;:16;:::i;:::-;;2154:111;;149:103:1;;113:694;;14:127:2;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:2;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:2;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:2:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:2;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:2;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:2;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:2;;;3992:26;3943:89;-1:-1:-1;;2747:1:2;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:2;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:2;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:2;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:2:o;:::-;113:694:1;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80636352211e116100a2578063a144819411610071578063a14481941461023e578063a22cb46514610251578063b88d4fde14610264578063c87b56dd14610277578063e985e9c51461028b57600080fd5b80636352211e146101ef57806370a08231146102025780638832e6e31461022357806395d89b411461023657600080fd5b806323b872dd116100de57806323b872dd146101a357806340c10f19146101b657806342842e0e146101c957806342966c68146101dc57600080fd5b806301ffc9a71461011057806306fdde0314610138578063081812fc1461014d578063095ea7b31461018e575b600080fd5b61012361011e366004610c4f565b6102b9565b60405190151581526020015b60405180910390f35b61014061030b565b60405161012f9190610cb9565b61017661015b366004610ccc565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b6101a161019c366004610cfc565b610399565b005b6101a16101b1366004610d26565b610480565b6101a16101c4366004610cfc565b610647565b6101a16101d7366004610d26565b610655565b6101a16101ea366004610ccc565b61072b565b6101766101fd366004610ccc565b610737565b610215610210366004610d62565b61078e565b60405190815260200161012f565b6101a1610231366004610d93565b6107f1565b6101406107fc565b6101a161024c366004610cfc565b610809565b6101a161025f366004610e5e565b610813565b6101a1610272366004610e9a565b61087f565b610140610285366004610ccc565b50606090565b610123610299366004610f35565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806102ea57506380ac58cd60e01b6001600160e01b03198316145b806103055750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000805461031890610f68565b80601f016020809104026020016040519081016040528092919081815260200182805461034490610f68565b80156103915780601f1061036657610100808354040283529160200191610391565b820191906000526020600020905b81548152906001019060200180831161037457829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806103e257506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104245760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146104d65760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b604482015260640161041b565b6001600160a01b0382166105205760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161041b565b336001600160a01b038416148061055a57506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061057b57506000818152600460205260409020546001600160a01b031633145b6105b85760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b604482015260640161041b565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106518282610944565b5050565b610660838383610480565b6001600160a01b0382163b158061070a5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4015b6020604051808303816000875af11580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe9190610fa2565b6001600160e01b031916145b6107265760405162461bcd60e51b815260040161041b90610fbf565b505050565b61073481610a4f565b50565b6000818152600260205260409020546001600160a01b0316806107895760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161041b565b919050565b60006001600160a01b0382166107d55760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640161041b565b506001600160a01b031660009081526003602052604090205490565b610726838383610b1c565b6001805461031890610f68565b6106518282610b6d565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61088a858585610480565b6001600160a01b0384163b15806109215750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906108d29033908a90899089908990600401610fe9565b6020604051808303816000875af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190610fa2565b6001600160e01b031916145b61093d5760405162461bcd60e51b815260040161041b90610fbf565b5050505050565b6001600160a01b03821661098e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b604482015260640161041b565b6000818152600260205260409020546001600160a01b0316156109e45760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640161041b565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b031680610aa15760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b604482015260640161041b565b6001600160a01b038116600081815260036020908152604080832080546000190190558583526002825280832080546001600160a01b031990811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b610b268383610944565b6001600160a01b0383163b158061070a5750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a02906106bb9033906000908890889060040161103d565b610b778282610944565b6001600160a01b0382163b1580610c1d5750604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af1158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c119190610fa2565b6001600160e01b031916145b6106515760405162461bcd60e51b815260040161041b90610fbf565b6001600160e01b03198116811461073457600080fd5b600060208284031215610c6157600080fd5b8135610c6c81610c39565b9392505050565b6000815180845260005b81811015610c9957602081850181015186830182015201610c7d565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c6c6020830184610c73565b600060208284031215610cde57600080fd5b5035919050565b80356001600160a01b038116811461078957600080fd5b60008060408385031215610d0f57600080fd5b610d1883610ce5565b946020939093013593505050565b600080600060608486031215610d3b57600080fd5b610d4484610ce5565b9250610d5260208501610ce5565b9150604084013590509250925092565b600060208284031215610d7457600080fd5b610c6c82610ce5565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610da857600080fd5b610db184610ce5565b925060208401359150604084013567ffffffffffffffff80821115610dd557600080fd5b818601915086601f830112610de957600080fd5b813581811115610dfb57610dfb610d7d565b604051601f8201601f19908116603f01168101908382118183101715610e2357610e23610d7d565b81604052828152896020848701011115610e3c57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060408385031215610e7157600080fd5b610e7a83610ce5565b915060208301358015158114610e8f57600080fd5b809150509250929050565b600080600080600060808688031215610eb257600080fd5b610ebb86610ce5565b9450610ec960208701610ce5565b935060408601359250606086013567ffffffffffffffff80821115610eed57600080fd5b818801915088601f830112610f0157600080fd5b813581811115610f1057600080fd5b896020828501011115610f2257600080fd5b9699959850939650602001949392505050565b60008060408385031215610f4857600080fd5b610f5183610ce5565b9150610f5f60208401610ce5565b90509250929050565b600181811c90821680610f7c57607f821691505b602082108103610f9c57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610fb457600080fd5b8151610c6c81610c39565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061107090830184610c73565b969550505050505056fea2646970667358221220fa41b60423a8dd16cc634f3f2727cf8eefe7287de26a5d031ccd040e1849a4b664736f6c63430008120033", + "sourceMap": "113:694:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4714:335:0;;;;;;:::i;:::-;;:::i;:::-;;;565:14:2;;558:22;540:41;;528:2;513:18;4714:335:0;;;;;;;;899:18;;;:::i;:::-;;;;;;;:::i;1844:46::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1844:46:0;;;;;;-1:-1:-1;;;;;1594:32:2;;;1576:51;;1564:2;1549:18;1844:46:0;1430:203:2;2453:282:0;;;;;;:::i;:::-;;:::i;:::-;;2950:741;;;;;;:::i;:::-;;:::i;360:93:1:-;;;;;;:::i;:::-;;:::i;3697:396:0:-;;;;;;:::i;:::-;;:::i;459:77:1:-;;;;;;:::i;:::-;;:::i;1327:149:0:-;;;;;;:::i;:::-;;:::i;1482:168::-;;;;;;:::i;:::-;;:::i;:::-;;;2745:25:2;;;2733:2;2718:18;1482:168:0;2599:177:2;649:156:1;;;;;;:::i;:::-;;:::i;924:20:0:-;;;:::i;542:101:1:-;;;;;;:::i;:::-;;:::i;2741:203:0:-;;;;;;:::i;:::-;;:::i;4099:427::-;;;;;;:::i;:::-;;:::i;258:96:1:-;;;;;;:::i;:::-;-1:-1:-1;337:13:1;;258:96;1897:68:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;4714:335;4790:4;-1:-1:-1;;;;;;;;;4825:25:0;;;;:100;;-1:-1:-1;;;;;;;;;;4900:25:0;;;4825:100;:175;;;-1:-1:-1;;;;;;;;;;4975:25:0;;;4825:175;4806:194;4714:335;-1:-1:-1;;4714:335:0:o;899:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2453:282::-;2524:13;2540:12;;;:8;:12;;;;;;-1:-1:-1;;;;;2540:12:0;2571:10;:19;;;:58;;-1:-1:-1;;;;;;2594:23:0;;;;;;:16;:23;;;;;;;;2618:10;2594:35;;;;;;;;;;2571:58;2563:85;;;;-1:-1:-1;;;2563:85:0;;5998:2:2;2563:85:0;;;5980:21:2;6037:2;6017:18;;;6010:30;-1:-1:-1;;;6056:18:2;;;6049:44;6110:18;;2563:85:0;;;;;;;;;2659:15;;;;:11;:15;;;;;;:25;;-1:-1:-1;;;;;;2659:25:0;-1:-1:-1;;;;;2659:25:0;;;;;;;;;2700:28;;2659:15;;2700:28;;;;;;;2514:221;2453:282;;:::o;2950:741::-;3081:12;;;;:8;:12;;;;;;-1:-1:-1;;;;;3073:20:0;;;3081:12;;3073:20;3065:43;;;;-1:-1:-1;;;3065:43:0;;6341:2:2;3065:43:0;;;6323:21:2;6380:2;6360:18;;;6353:30;-1:-1:-1;;;6399:18:2;;;6392:40;6449:18;;3065:43:0;6139:334:2;3065:43:0;-1:-1:-1;;;;;3127:16:0;;3119:46;;;;-1:-1:-1;;;3119:46:0;;6680:2:2;3119:46:0;;;6662:21:2;6719:2;6699:18;;;6692:30;-1:-1:-1;;;6738:18:2;;;6731:47;6795:18;;3119:46:0;6478:341:2;3119:46:0;3197:10;-1:-1:-1;;;;;3197:18:0;;;;:56;;-1:-1:-1;;;;;;3219:22:0;;;;;;:16;:22;;;;;;;;3242:10;3219:34;;;;;;;;;;3197:56;:89;;;-1:-1:-1;3271:15:0;;;;:11;:15;;;;;;-1:-1:-1;;;;;3271:15:0;3257:10;:29;3197:89;3176:150;;;;-1:-1:-1;;;3176:150:0;;5998:2:2;3176:150:0;;;5980:21:2;6037:2;6017:18;;;6010:30;-1:-1:-1;;;6056:18:2;;;6049:44;6110:18;;3176:150:0;5796:338:2;3176:150:0;-1:-1:-1;;;;;3526:16:0;;;;;;;:10;:16;;;;;;;;:18;;-1:-1:-1;;3526:18:0;;;3559:14;;;;;;;;;:16;;3526:18;3559:16;;;3596:12;;;:8;:12;;;;;:17;;-1:-1:-1;;;;;;3596:17:0;;;;;;;;3631:11;:15;;;;;;3624:22;;;;;;;;3662;;3605:2;;3559:14;3526:16;3662:22;;;2950:741;;;:::o;360:93:1:-;428:18;434:2;438:7;428:5;:18::i;:::-;360:93;;:::o;3697:396:0:-;3816:26;3829:4;3835:2;3839;3816:12;:26::i;:::-;-1:-1:-1;;;;;3874:14:0;;;:19;;:170;;-1:-1:-1;3913:66:0;;-1:-1:-1;;;3913:66:0;;;3954:10;3913:66;;;7129:34:2;-1:-1:-1;;;;;7199:15:2;;;7179:18;;;7172:43;7231:18;;;7224:34;;;7294:3;7274:18;;;7267:31;-1:-1:-1;7314:19:2;;;7307:30;3999:45:0;;3913:40;;;;3999:45;;7354:19:2;;3913:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;3913:131:0;;3874:170;3853:233;;;;-1:-1:-1;;;3853:233:0;;;;;;;:::i;:::-;3697:396;;;:::o;459:77:1:-;515:14;521:7;515:5;:14::i;:::-;459:77;:::o;1327:149:0:-;1385:13;1427:12;;;:8;:12;;;;;;-1:-1:-1;;;;;1427:12:0;;1410:59;;;;-1:-1:-1;;;1410:59:0;;8185:2:2;1410:59:0;;;8167:21:2;8224:2;8204:18;;;8197:30;-1:-1:-1;;;8243:18:2;;;8236:40;8293:18;;1410:59:0;7983:334:2;1410:59:0;1327:149;;;:::o;1482:168::-;1545:7;-1:-1:-1;;;;;1572:19:0;;1564:44;;;;-1:-1:-1;;;1564:44:0;;8524:2:2;1564:44:0;;;8506:21:2;8563:2;8543:18;;;8536:30;-1:-1:-1;;;8582:18:2;;;8575:42;8634:18;;1564:44:0;8322:336:2;1564:44:0;-1:-1:-1;;;;;;1626:17:0;;;;;:10;:17;;;;;;;1482:168::o;649:156:1:-;770:28;780:2;784:7;793:4;770:9;:28::i;924:20:0:-;;;;;;;:::i;542:101:1:-;614:22;624:2;628:7;614:9;:22::i;2741:203:0:-;2843:10;2826:28;;;;:16;:28;;;;;;;;-1:-1:-1;;;;;2826:38:0;;;;;;;;;;;;:49;;-1:-1:-1;;2826:49:0;;;;;;;;;;2891:46;;540:41:2;;;2826:38:0;;2843:10;2891:46;;513:18:2;2891:46:0;;;;;;;2741:203;;:::o;4099:427::-;4247:26;4260:4;4266:2;4270;4247:12;:26::i;:::-;-1:-1:-1;;;;;4305:14:0;;;:19;;:172;;-1:-1:-1;4344:68:0;;-1:-1:-1;;;4344:68:0;;;4432:45;-1:-1:-1;;;;;4344:40:0;;;4432:45;;4344:68;;4385:10;;4397:4;;4403:2;;4407:4;;;;4344:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4344:133:0;;4305:172;4284:235;;;;-1:-1:-1;;;4284:235:0;;;;;;;:::i;:::-;4099:427;;;;;:::o;5243:371::-;-1:-1:-1;;;;;5317:16:0;;5309:46;;;;-1:-1:-1;;;5309:46:0;;6680:2:2;5309:46:0;;;6662:21:2;6719:2;6699:18;;;6692:30;-1:-1:-1;;;6738:18:2;;;6731:47;6795:18;;5309:46:0;6478:341:2;5309:46:0;5398:1;5374:12;;;:8;:12;;;;;;-1:-1:-1;;;;;5374:12:0;:26;5366:53;;;;-1:-1:-1;;;5366:53:0;;9532:2:2;5366:53:0;;;9514:21:2;9571:2;9551:18;;;9544:30;-1:-1:-1;;;9590:18:2;;;9583:44;9644:18;;5366:53:0;9330:338:2;5366:53:0;-1:-1:-1;;;;;5509:14:0;;;;;;:10;:14;;;;;;;;:16;;;;;;5546:12;;;:8;:12;;;;;;:17;;-1:-1:-1;;;;;;5546:17:0;;;;;5579:28;5555:2;;5509:14;;5579:28;;5509:14;;5579:28;5243:371;;:::o;5620:::-;5674:13;5690:12;;;:8;:12;;;;;;-1:-1:-1;;;;;5690:12:0;;5713:42;;;;-1:-1:-1;;;5713:42:0;;8185:2:2;5713:42:0;;;8167:21:2;8224:2;8204:18;;;8197:30;-1:-1:-1;;;8243:18:2;;;8236:40;8293:18;;5713:42:0;7983:334:2;5713:42:0;-1:-1:-1;;;;;5845:17:0;;;;;;:10;:17;;;;;;;;:19;;-1:-1:-1;;5845:19:0;;;5892:12;;;:8;:12;;;;;5885:19;;-1:-1:-1;;;;;;5885:19:0;;;;;;5922:11;:15;;;;;;5915:22;;;;;;;;5953:31;5901:2;;5845:17;5953:31;;5845:17;;5953:31;5664:327;5620:371;:::o;6531:391::-;6650:13;6656:2;6660;6650:5;:13::i;:::-;-1:-1:-1;;;;;6695:14:0;;;:19;;:178;;-1:-1:-1;6734:74:0;;-1:-1:-1;;;6734:74:0;;;6828:45;-1:-1:-1;;;;;6734:40:0;;;6828:45;;6734:74;;6775:10;;6795:1;;6799:2;;6803:4;;6734:74;;;:::i;6185:340::-;6255:13;6261:2;6265;6255:5;:13::i;:::-;-1:-1:-1;;;;;6300:14:0;;;:19;;:176;;-1:-1:-1;6339:72:0;;-1:-1:-1;;;6339:72:0;;;6380:10;6339:72;;;7129:34:2;6400:1:0;7179:18:2;;;7172:43;;;7231:18;;;7224:34;;;7294:3;7274:18;;;7267:31;7314:19;;;7307:30;6431:45:0;-1:-1:-1;;;;;6339:40:0;;;6431:45;;7354:19:2;;6339:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;6339:137:0;;6300:176;6279:239;;;;-1:-1:-1;;;6279:239:0;;;;;;;:::i;14:131:2:-;-1:-1:-1;;;;;;88:32:2;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;:::-;384:5;150:245;-1:-1:-1;;;150:245:2:o;592:423::-;634:3;672:5;666:12;699:6;694:3;687:19;724:1;734:162;748:6;745:1;742:13;734:162;;;810:4;866:13;;;862:22;;856:29;838:11;;;834:20;;827:59;763:12;734:162;;;738:3;941:1;934:4;925:6;920:3;916:16;912:27;905:38;1004:4;997:2;993:7;988:2;980:6;976:15;972:29;967:3;963:39;959:50;952:57;;;592:423;;;;:::o;1020:220::-;1169:2;1158:9;1151:21;1132:4;1189:45;1230:2;1219:9;1215:18;1207:6;1189:45;:::i;1245:180::-;1304:6;1357:2;1345:9;1336:7;1332:23;1328:32;1325:52;;;1373:1;1370;1363:12;1325:52;-1:-1:-1;1396:23:2;;1245:180;-1:-1:-1;1245:180:2:o;1638:173::-;1706:20;;-1:-1:-1;;;;;1755:31:2;;1745:42;;1735:70;;1801:1;1798;1791:12;1816:254;1884:6;1892;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;1984:29;2003:9;1984:29;:::i;:::-;1974:39;2060:2;2045:18;;;;2032:32;;-1:-1:-1;;;1816:254:2:o;2075:328::-;2152:6;2160;2168;2221:2;2209:9;2200:7;2196:23;2192:32;2189:52;;;2237:1;2234;2227:12;2189:52;2260:29;2279:9;2260:29;:::i;:::-;2250:39;;2308:38;2342:2;2331:9;2327:18;2308:38;:::i;:::-;2298:48;;2393:2;2382:9;2378:18;2365:32;2355:42;;2075:328;;;;;:::o;2408:186::-;2467:6;2520:2;2508:9;2499:7;2495:23;2491:32;2488:52;;;2536:1;2533;2526:12;2488:52;2559:29;2578:9;2559:29;:::i;2781:127::-;2842:10;2837:3;2833:20;2830:1;2823:31;2873:4;2870:1;2863:15;2897:4;2894:1;2887:15;2913:1063;2999:6;3007;3015;3068:2;3056:9;3047:7;3043:23;3039:32;3036:52;;;3084:1;3081;3074:12;3036:52;3107:29;3126:9;3107:29;:::i;:::-;3097:39;;3183:2;3172:9;3168:18;3155:32;3145:42;;3238:2;3227:9;3223:18;3210:32;3261:18;3302:2;3294:6;3291:14;3288:34;;;3318:1;3315;3308:12;3288:34;3356:6;3345:9;3341:22;3331:32;;3401:7;3394:4;3390:2;3386:13;3382:27;3372:55;;3423:1;3420;3413:12;3372:55;3459:2;3446:16;3481:2;3477;3474:10;3471:36;;;3487:18;;:::i;:::-;3562:2;3556:9;3530:2;3616:13;;-1:-1:-1;;3612:22:2;;;3636:2;3608:31;3604:40;3592:53;;;3660:18;;;3680:22;;;3657:46;3654:72;;;3706:18;;:::i;:::-;3746:10;3742:2;3735:22;3781:2;3773:6;3766:18;3821:7;3816:2;3811;3807;3803:11;3799:20;3796:33;3793:53;;;3842:1;3839;3832:12;3793:53;3898:2;3893;3889;3885:11;3880:2;3872:6;3868:15;3855:46;3943:1;3938:2;3933;3925:6;3921:15;3917:24;3910:35;3964:6;3954:16;;;;;;;2913:1063;;;;;:::o;3981:347::-;4046:6;4054;4107:2;4095:9;4086:7;4082:23;4078:32;4075:52;;;4123:1;4120;4113:12;4075:52;4146:29;4165:9;4146:29;:::i;:::-;4136:39;;4225:2;4214:9;4210:18;4197:32;4272:5;4265:13;4258:21;4251:5;4248:32;4238:60;;4294:1;4291;4284:12;4238:60;4317:5;4307:15;;;3981:347;;;;;:::o;4333:808::-;4430:6;4438;4446;4454;4462;4515:3;4503:9;4494:7;4490:23;4486:33;4483:53;;;4532:1;4529;4522:12;4483:53;4555:29;4574:9;4555:29;:::i;:::-;4545:39;;4603:38;4637:2;4626:9;4622:18;4603:38;:::i;:::-;4593:48;;4688:2;4677:9;4673:18;4660:32;4650:42;;4743:2;4732:9;4728:18;4715:32;4766:18;4807:2;4799:6;4796:14;4793:34;;;4823:1;4820;4813:12;4793:34;4861:6;4850:9;4846:22;4836:32;;4906:7;4899:4;4895:2;4891:13;4887:27;4877:55;;4928:1;4925;4918:12;4877:55;4968:2;4955:16;4994:2;4986:6;4983:14;4980:34;;;5010:1;5007;5000:12;4980:34;5055:7;5050:2;5041:6;5037:2;5033:15;5029:24;5026:37;5023:57;;;5076:1;5073;5066:12;5023:57;4333:808;;;;-1:-1:-1;4333:808:2;;-1:-1:-1;5107:2:2;5099:11;;5129:6;4333:808;-1:-1:-1;;;4333:808:2:o;5146:260::-;5214:6;5222;5275:2;5263:9;5254:7;5250:23;5246:32;5243:52;;;5291:1;5288;5281:12;5243:52;5314:29;5333:9;5314:29;:::i;:::-;5304:39;;5362:38;5396:2;5385:9;5381:18;5362:38;:::i;:::-;5352:48;;5146:260;;;;;:::o;5411:380::-;5490:1;5486:12;;;;5533;;;5554:61;;5608:4;5600:6;5596:17;5586:27;;5554:61;5661:2;5653:6;5650:14;5630:18;5627:38;5624:161;;5707:10;5702:3;5698:20;5695:1;5688:31;5742:4;5739:1;5732:15;5770:4;5767:1;5760:15;5624:161;;5411:380;;;:::o;7384:249::-;7453:6;7506:2;7494:9;7485:7;7481:23;7477:32;7474:52;;;7522:1;7519;7512:12;7474:52;7554:9;7548:16;7573:30;7597:5;7573:30;:::i;7638:340::-;7840:2;7822:21;;;7879:2;7859:18;;;7852:30;-1:-1:-1;;;7913:2:2;7898:18;;7891:46;7969:2;7954:18;;7638:340::o;8663:662::-;-1:-1:-1;;;;;8942:15:2;;;8924:34;;8994:15;;8989:2;8974:18;;8967:43;9041:2;9026:18;;9019:34;;;9089:3;9084:2;9069:18;;9062:31;;;9109:19;;9102:35;;;8867:4;9130:6;9180;8904:3;9159:19;;9146:49;9245:1;9239:3;9230:6;9219:9;9215:22;9211:32;9204:43;9315:3;9308:2;9304:7;9299:2;9291:6;9287:15;9283:29;9272:9;9268:45;9264:55;9256:63;;8663:662;;;;;;;;:::o;9673:489::-;-1:-1:-1;;;;;9942:15:2;;;9924:34;;9994:15;;9989:2;9974:18;;9967:43;10041:2;10026:18;;10019:34;;;10089:3;10084:2;10069:18;;10062:31;;;9867:4;;10110:46;;10136:19;;10128:6;10110:46;:::i;:::-;10102:54;9673:489;-1:-1:-1;;;;;;9673:489:2:o", + "linkReferences": {} + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "mint(address,uint256)": "40c10f19", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeMint(address,uint256)": "a1448194", + "safeMint(address,uint256,bytes)": "8832e6e3", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MockERC721.sol\":\"MockERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"../../node_modules/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"src/MockERC721.sol\":{\"keccak256\":\"0x634bbce82039ce64e3a32afc3b8f226c4caf295c206bc5ec416c18e10193ed7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d17f5919af27a640919802df99852910d5633bc9d45483c27f31452d1408ac8\",\"dweb:/ipfs/QmUSJSFh7D15U2kQU1i138cmRMVQkoVCTRvpkjXUr42GfH\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ApprovalForAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": true + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "mint" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeMint" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeMint" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "safeTransferFrom" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalForAll" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function", + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/MockERC721.sol": "MockERC721" + }, + "libraries": {} + }, + "sources": { + "../../node_modules/solmate/src/tokens/ERC721.sol": { + "keccak256": "0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d", + "urls": [ + "bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403", + "dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK" + ], + "license": "AGPL-3.0-only" + }, + "src/MockERC721.sol": { + "keccak256": "0x634bbce82039ce64e3a32afc3b8f226c4caf295c206bc5ec416c18e10193ed7b", + "urls": [ + "bzz-raw://2d17f5919af27a640919802df99852910d5633bc9d45483c27f31452d1408ac8", + "dweb:/ipfs/QmUSJSFh7D15U2kQU1i138cmRMVQkoVCTRvpkjXUr42GfH" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/MockERC721.sol", + "id": 644, + "exportedSymbols": { + "ERC721": [ + 543 + ], + "MockERC721": [ + 643 + ] + }, + "nodeType": "SourceUnit", + "src": "32:776:1", + "nodes": [ + { + "id": 565, + "nodeType": "PragmaDirective", + "src": "32:24:1", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".18" + ] + }, + { + "id": 567, + "nodeType": "ImportDirective", + "src": "58:53:1", + "nodes": [], + "absolutePath": "../../node_modules/solmate/src/tokens/ERC721.sol", + "file": "solmate/src/tokens/ERC721.sol", + "nameLocation": "-1:-1:-1", + "scope": 644, + "sourceUnit": 564, + "symbolAliases": [ + { + "foreign": { + "id": 566, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "66:6:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 643, + "nodeType": "ContractDefinition", + "src": "113:694:1", + "nodes": [ + { + "id": 581, + "nodeType": "FunctionDefinition", + "src": "149:103:1", + "nodes": [], + "body": { + "id": 580, + "nodeType": "Block", + "src": "250:2:1", + "nodes": [], + "statements": [] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 576, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 571, + "src": "234:5:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 577, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 573, + "src": "241:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "id": 578, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 575, + "name": "ERC721", + "nameLocations": [ + "227:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 543, + "src": "227:6:1" + }, + "nodeType": "ModifierInvocation", + "src": "227:22:1" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 574, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 571, + "mutability": "mutable", + "name": "_name", + "nameLocation": "184:5:1", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "170:19:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 570, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "170:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 573, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "213:7:1", + "nodeType": "VariableDeclaration", + "scope": 581, + "src": "199:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 572, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "199:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "160:66:1" + }, + "returnParameters": { + "id": 579, + "nodeType": "ParameterList", + "parameters": [], + "src": "250:0:1" + }, + "scope": 643, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 590, + "nodeType": "FunctionDefinition", + "src": "258:96:1", + "nodes": [], + "body": { + "id": 589, + "nodeType": "Block", + "src": "352:2:1", + "nodes": [], + "statements": [] + }, + "baseFunctions": [ + 37 + ], + "functionSelector": "c87b56dd", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "267:8:1", + "overrides": { + "id": 585, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "319:8:1" + }, + "parameters": { + "id": 584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 583, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 590, + "src": "285:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "285:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "275:23:1" + }, + "returnParameters": { + "id": 588, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 587, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 590, + "src": "337:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 586, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "337:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "336:15:1" + }, + "scope": 643, + "stateMutability": "pure", + "virtual": true, + "visibility": "public" + }, + { + "id": 603, + "nodeType": "FunctionDefinition", + "src": "360:93:1", + "nodes": [], + "body": { + "id": 602, + "nodeType": "Block", + "src": "418:35:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 598, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 592, + "src": "434:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 599, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 594, + "src": "438:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 597, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 413, + "src": "428:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "428:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 601, + "nodeType": "ExpressionStatement", + "src": "428:18:1" + } + ] + }, + "functionSelector": "40c10f19", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "369:4:1", + "parameters": { + "id": 595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 592, + "mutability": "mutable", + "name": "to", + "nameLocation": "382:2:1", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "374:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "374:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 594, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "394:7:1", + "nodeType": "VariableDeclaration", + "scope": 603, + "src": "386:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "386:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "373:29:1" + }, + "returnParameters": { + "id": 596, + "nodeType": "ParameterList", + "parameters": [], + "src": "418:0:1" + }, + "scope": 643, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 613, + "nodeType": "FunctionDefinition", + "src": "459:77:1", + "nodes": [], + "body": { + "id": 612, + "nodeType": "Block", + "src": "505:31:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 609, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 605, + "src": "521:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 608, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "515:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "515:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 611, + "nodeType": "ExpressionStatement", + "src": "515:14:1" + } + ] + }, + "functionSelector": "42966c68", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "468:4:1", + "parameters": { + "id": 606, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 605, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "481:7:1", + "nodeType": "VariableDeclaration", + "scope": 613, + "src": "473:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 604, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "472:17:1" + }, + "returnParameters": { + "id": 607, + "nodeType": "ParameterList", + "parameters": [], + "src": "505:0:1" + }, + "scope": 643, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 626, + "nodeType": "FunctionDefinition", + "src": "542:101:1", + "nodes": [], + "body": { + "id": 625, + "nodeType": "Block", + "src": "604:39:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 621, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 615, + "src": "624:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 622, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 617, + "src": "628:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 620, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 500, + 542 + ], + "referencedDeclaration": 500, + "src": "614:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "614:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 624, + "nodeType": "ExpressionStatement", + "src": "614:22:1" + } + ] + }, + "functionSelector": "a1448194", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeMint", + "nameLocation": "551:8:1", + "parameters": { + "id": 618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 615, + "mutability": "mutable", + "name": "to", + "nameLocation": "568:2:1", + "nodeType": "VariableDeclaration", + "scope": 626, + "src": "560:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 614, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "560:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 617, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "580:7:1", + "nodeType": "VariableDeclaration", + "scope": 626, + "src": "572:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 616, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "572:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "559:29:1" + }, + "returnParameters": { + "id": 619, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:0:1" + }, + "scope": 643, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "id": 642, + "nodeType": "FunctionDefinition", + "src": "649:156:1", + "nodes": [], + "body": { + "id": 641, + "nodeType": "Block", + "src": "760:45:1", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 636, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 628, + "src": "780:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 637, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 630, + "src": "784:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 638, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "793: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": 635, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 500, + 542 + ], + "referencedDeclaration": 542, + "src": "770:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "770:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 640, + "nodeType": "ExpressionStatement", + "src": "770:28:1" + } + ] + }, + "functionSelector": "8832e6e3", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeMint", + "nameLocation": "658:8:1", + "parameters": { + "id": 633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 628, + "mutability": "mutable", + "name": "to", + "nameLocation": "684:2:1", + "nodeType": "VariableDeclaration", + "scope": 642, + "src": "676:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 627, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "676:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 630, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "704:7:1", + "nodeType": "VariableDeclaration", + "scope": 642, + "src": "696:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "696:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "data", + "nameLocation": "734:4:1", + "nodeType": "VariableDeclaration", + "scope": 642, + "src": "721:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 631, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "721:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "666:78:1" + }, + "returnParameters": { + "id": 634, + "nodeType": "ParameterList", + "parameters": [], + "src": "760:0:1" + }, + "scope": 643, + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 568, + "name": "ERC721", + "nameLocations": [ + "136:6:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 543, + "src": "136:6:1" + }, + "id": 569, + "nodeType": "InheritanceSpecifier", + "src": "136:6:1" + } + ], + "canonicalName": "MockERC721", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 643, + 543 + ], + "name": "MockERC721", + "nameLocation": "122:10:1", + "scope": 644, + "usedErrors": [] + } + ], + "license": "MIT" + }, + "id": 1 +} as const; + export const Playground = { - abi: [ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Approve", + "type": "event" + }, { - inputs: [ + "anonymous": false, + "inputs": [ { - internalType: 'address', - name: 'spender', - type: 'address', + "indexed": true, + "internalType": "uint256", + "name": "a", + "type": "uint256" }, { - internalType: 'uint256', - name: 'amount', - type: 'uint256', + "indexed": false, + "internalType": "bool", + "name": "b", + "type": "bool" }, + { + "indexed": false, + "internalType": "string", + "name": "c", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "d", + "type": "uint256" + } ], - name: 'approve', - outputs: [ + "name": "TestEventRivet1", + "type": "event" + }, + { + "inputs": [ { - internalType: 'bool', - name: '', - type: 'bool', + "internalType": "address", + "name": "spender", + "type": "address" }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } ], - stateMutability: 'nonpayable', - type: 'function', + "stateMutability": "nonpayable", + "type": "function" }, { - inputs: [ + "inputs": [ { - internalType: 'uint256', - name: 'a', - type: 'uint256', + "internalType": "uint256", + "name": "a", + "type": "uint256" }, { - internalType: 'bool', - name: 'b', - type: 'bool', + "internalType": "bool", + "name": "b", + "type": "bool" }, { - components: [ + "components": [ { - internalType: 'uint256', - name: 'x', - type: 'uint256', + "internalType": "uint256", + "name": "x", + "type": "uint256" }, { - internalType: 'bool', - name: 'y', - type: 'bool', - }, + "internalType": "bool", + "name": "y", + "type": "bool" + } ], - internalType: 'struct Playground.Foo', - name: 'c', - type: 'tuple', + "internalType": "struct Playground.Foo", + "name": "c", + "type": "tuple" }, { - components: [ + "components": [ { - internalType: 'uint256', - name: 'x', - type: 'uint256', + "internalType": "uint256", + "name": "x", + "type": "uint256" }, { - internalType: 'bool', - name: 'y', - type: 'bool', - }, + "internalType": "bool", + "name": "y", + "type": "bool" + } ], - internalType: 'struct Playground.Foo[]', - name: 'd', - type: 'tuple[]', - }, + "internalType": "struct Playground.Foo[]", + "name": "d", + "type": "tuple[]" + } ], - name: 'test_rivet_1', - outputs: [ + "name": "test_rivet_1", + "outputs": [ { - internalType: 'bool', - name: 'success', - type: 'bool', - }, + "internalType": "bool", + "name": "success", + "type": "bool" + } ], - stateMutability: 'nonpayable', - type: 'function', - }, + "stateMutability": "nonpayable", + "type": "function" + } ], - bytecode: { - object: - '0x608060405234801561001057600080fd5b5061027c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063095ea7b31461003b578063bd01249914610065575b600080fd5b61005161004936600461007d565b600092915050565b604051901515815260200160405180910390f35b610051610073366004610168565b6000949350505050565b6000806040838503121561009057600080fd5b82356001600160a01b03811681146100a757600080fd5b946020939093013593505050565b803580151581146100c557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610109576101096100ca565b604052919050565b60006040828403121561012357600080fd5b6040516040810181811067ffffffffffffffff82111715610146576101466100ca565b6040528235815290508061015c602084016100b5565b60208201525092915050565b60008060008060a0858703121561017e57600080fd5b84359350602061018f8187016100b5565b9350604061019f88828901610111565b9350608087013567ffffffffffffffff808211156101bc57600080fd5b818901915089601f8301126101d057600080fd5b8135818111156101e2576101e26100ca565b6101f0858260051b016100e0565b818152858101925060069190911b83018501908b82111561021057600080fd5b928501925b81841015610236576102278c85610111565b83529284019291850191610215565b989b979a5095985050505050505056fea264697066735822122097c0529379d9c93ca9a59cef6424cf7e8fc250a9732cf97d0a33a09678fc531a64736f6c63430008120033', - sourceMap: '58:305:0:-:0;;;;;;;;;;;;;;;;;;;', - linkReferences: {}, + "bytecode": { + "object": "0x608060405234801561001057600080fd5b5061032d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063095ea7b31461003b578063bd01249914610062575b600080fd5b61004e61004936600461012e565b610075565b604051901515815260200160405180910390f35b61004e610070366004610219565b6100c3565b6000826001600160a01b03167f90ec57f18fa7b15c6b8d5e4d1deb90796c74b2ff23d4d0cecad0cb42a96b3128836040516100b291815260200190565b60405180910390a250600192915050565b60008260000151857faec1cb26522cfa7f986ea3c986cd2cd3876a44322e5322685750cf15246002cf8660405161011b9115158152604060208201819052600590820152641c9a5d995d60da1b606082015260800190565b60405180910390a3506001949350505050565b6000806040838503121561014157600080fd5b82356001600160a01b038116811461015857600080fd5b946020939093013593505050565b8035801515811461017657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156101ba576101ba61017b565b604052919050565b6000604082840312156101d457600080fd5b6040516040810181811067ffffffffffffffff821117156101f7576101f761017b565b6040528235815290508061020d60208401610166565b60208201525092915050565b60008060008060a0858703121561022f57600080fd5b843593506020610240818701610166565b93506040610250888289016101c2565b9350608087013567ffffffffffffffff8082111561026d57600080fd5b818901915089601f83011261028157600080fd5b8135818111156102935761029361017b565b6102a1858260051b01610191565b818152858101925060069190911b83018501908b8211156102c157600080fd5b928501925b818410156102e7576102d88c856101c2565b835292840192918501916102c6565b989b979a5095985050505050505056fea2646970667358221220c13e371db6d67f1ca65a4d95b7cbb621a9277c66297be9cba5e08ad7bb802ef464736f6c63430008120033", + "sourceMap": "58:629:2:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} }, - deployedBytecode: { - object: - '0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063095ea7b31461003b578063bd01249914610065575b600080fd5b61005161004936600461007d565b600092915050565b604051901515815260200160405180910390f35b610051610073366004610168565b6000949350505050565b6000806040838503121561009057600080fd5b82356001600160a01b03811681146100a757600080fd5b946020939093013593505050565b803580151581146100c557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610109576101096100ca565b604052919050565b60006040828403121561012357600080fd5b6040516040810181811067ffffffffffffffff82111715610146576101466100ca565b6040528235815290508061015c602084016100b5565b60208201525092915050565b60008060008060a0858703121561017e57600080fd5b84359350602061018f8187016100b5565b9350604061019f88828901610111565b9350608087013567ffffffffffffffff808211156101bc57600080fd5b818901915089601f8301126101d057600080fd5b8135818111156101e2576101e26100ca565b6101f0858260051b016100e0565b818152858101925060069190911b83018501908b82111561021057600080fd5b928501925b81841015610236576102278c85610111565b83529284019291850191610215565b989b979a5095985050505050505056fea264697066735822122097c0529379d9c93ca9a59cef6424cf7e8fc250a9732cf97d0a33a09678fc531a64736f6c63430008120033', - sourceMap: - '58:305:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:74;;;;;;:::i;:::-;353:4;287:74;;;;;;;;538:14:1;;531:22;513:41;;501:2;486:18;287:74:0;;;;;;;140:141;;;;;;:::i;:::-;265:12;140:141;;;;;;;14:354:1;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;185:23;;-1:-1:-1;;;;;237:31:1;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;358:2;343:18;;;;330:32;;-1:-1:-1;;;14:354:1:o;565:160::-;630:20;;686:13;;679:21;669:32;;659:60;;715:1;712;705:12;659:60;565:160;;;:::o;730:127::-;791:10;786:3;782:20;779:1;772:31;822:4;819:1;812:15;846:4;843:1;836:15;862:275;933:2;927:9;998:2;979:13;;-1:-1:-1;;975:27:1;963:40;;1033:18;1018:34;;1054:22;;;1015:62;1012:88;;;1080:18;;:::i;:::-;1116:2;1109:22;862:275;;-1:-1:-1;862:275:1:o;1142:475::-;1192:5;1240:4;1228:9;1223:3;1219:19;1215:30;1212:50;;;1258:1;1255;1248:12;1212:50;1291:4;1285:11;1335:4;1327:6;1323:17;1406:6;1394:10;1391:22;1370:18;1358:10;1355:34;1352:62;1349:88;;;1417:18;;:::i;:::-;1453:4;1446:24;1518:23;;1503:39;;1488:6;-1:-1:-1;1488:6:1;1575:35;1606:2;1591:18;;1575:35;:::i;:::-;1570:2;1562:6;1558:15;1551:60;;1142:475;;;;:::o;1622:1232::-;1766:6;1774;1782;1790;1843:3;1831:9;1822:7;1818:23;1814:33;1811:53;;;1860:1;1857;1850:12;1811:53;1896:9;1883:23;1873:33;;1925:2;1946:35;1977:2;1966:9;1962:18;1946:35;:::i;:::-;1936:45;;2000:2;2021:50;2063:7;2058:2;2047:9;2043:18;2021:50;:::i;:::-;2011:60;;2122:3;2111:9;2107:19;2094:33;2146:18;2187:2;2179:6;2176:14;2173:34;;;2203:1;2200;2193:12;2173:34;2241:6;2230:9;2226:22;2216:32;;2286:7;2279:4;2275:2;2271:13;2267:27;2257:55;;2308:1;2305;2298:12;2257:55;2344:2;2331:16;2366:2;2362;2359:10;2356:36;;;2372:18;;:::i;:::-;2412:36;2444:2;2439;2436:1;2432:10;2428:19;2412:36;:::i;:::-;2482:15;;;2513:12;;;;-1:-1:-1;2564:1:1;2560:10;;;;2552:19;;2548:28;;;2588:19;;;2585:39;;;2620:1;2617;2610:12;2585:39;2644:11;;;;2664:160;2680:6;2675:3;2672:15;2664:160;;;2746:35;2773:7;2768:3;2746:35;:::i;:::-;2734:48;;2697:12;;;;2802;;;;2664:160;;;1622:1232;;;;-1:-1:-1;1622:1232:1;;-1:-1:-1;;;;;;;1622:1232:1:o', - linkReferences: {}, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063095ea7b31461003b578063bd01249914610062575b600080fd5b61004e61004936600461012e565b610075565b604051901515815260200160405180910390f35b61004e610070366004610219565b6100c3565b6000826001600160a01b03167f90ec57f18fa7b15c6b8d5e4d1deb90796c74b2ff23d4d0cecad0cb42a96b3128836040516100b291815260200190565b60405180910390a250600192915050565b60008260000151857faec1cb26522cfa7f986ea3c986cd2cd3876a44322e5322685750cf15246002cf8660405161011b9115158152604060208201819052600590820152641c9a5d995d60da1b606082015260800190565b60405180910390a3506001949350505050565b6000806040838503121561014157600080fd5b82356001600160a01b038116811461015857600080fd5b946020939093013593505050565b8035801515811461017657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156101ba576101ba61017b565b604052919050565b6000604082840312156101d457600080fd5b6040516040810181811067ffffffffffffffff821117156101f7576101f761017b565b6040528235815290508061020d60208401610166565b60208201525092915050565b60008060008060a0858703121561022f57600080fd5b843593506020610240818701610166565b93506040610250888289016101c2565b9350608087013567ffffffffffffffff8082111561026d57600080fd5b818901915089601f83011261028157600080fd5b8135818111156102935761029361017b565b6102a1858260051b01610191565b818152858101925060069190911b83018501908b8211156102c157600080fd5b928501925b818410156102e7576102d88c856101c2565b835292840192918501916102c6565b989b979a5095985050505050505056fea2646970667358221220c13e371db6d67f1ca65a4d95b7cbb621a9277c66297be9cba5e08ad7bb802ef464736f6c63430008120033", + "sourceMap": "58:629:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;546:139;;;;;;:::i;:::-;;:::i;:::-;;;538:14:3;;531:22;513:41;;501:2;486:18;546:139:2;;;;;;;323:217;;;;;;:::i;:::-;;:::i;546:139::-;612:4;641:7;-1:-1:-1;;;;;633:24:2;;650:6;633:24;;;;3009:25:3;;2997:2;2982:18;;2863:177;633:24:2;;;;;;;;-1:-1:-1;674:4:2;546:139;;;;:::o;323:217::-;448:12;508:1;:3;;;493:1;477:35;496:1;477:35;;;;3276:14:3;3269:22;3251:41;;3328:2;3323;3308:18;;3301:30;;;3367:1;3347:18;;;3340:29;-1:-1:-1;;;3400:2:3;3385:18;;3378:35;3445:3;3430:19;;3045:410;477:35:2;;;;;;;;-1:-1:-1;529:4:2;323:217;;;;;;:::o;14:354:3:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;185:23;;-1:-1:-1;;;;;237:31:3;;227:42;;217:70;;283:1;280;273:12;217:70;306:5;358:2;343:18;;;;330:32;;-1:-1:-1;;;14:354:3:o;565:160::-;630:20;;686:13;;679:21;669:32;;659:60;;715:1;712;705:12;659:60;565:160;;;:::o;730:127::-;791:10;786:3;782:20;779:1;772:31;822:4;819:1;812:15;846:4;843:1;836:15;862:275;933:2;927:9;998:2;979:13;;-1:-1:-1;;975:27:3;963:40;;1033:18;1018:34;;1054:22;;;1015:62;1012:88;;;1080:18;;:::i;:::-;1116:2;1109:22;862:275;;-1:-1:-1;862:275:3:o;1142:475::-;1192:5;1240:4;1228:9;1223:3;1219:19;1215:30;1212:50;;;1258:1;1255;1248:12;1212:50;1291:4;1285:11;1335:4;1327:6;1323:17;1406:6;1394:10;1391:22;1370:18;1358:10;1355:34;1352:62;1349:88;;;1417:18;;:::i;:::-;1453:4;1446:24;1518:23;;1503:39;;1488:6;-1:-1:-1;1488:6:3;1575:35;1606:2;1591:18;;1575:35;:::i;:::-;1570:2;1562:6;1558:15;1551:60;;1142:475;;;;:::o;1622:1236::-;1770:6;1778;1786;1794;1847:3;1835:9;1826:7;1822:23;1818:33;1815:53;;;1864:1;1861;1854:12;1815:53;1900:9;1887:23;1877:33;;1929:2;1950:35;1981:2;1970:9;1966:18;1950:35;:::i;:::-;1940:45;;2004:2;2025:50;2067:7;2062:2;2051:9;2047:18;2025:50;:::i;:::-;2015:60;;2126:3;2115:9;2111:19;2098:33;2150:18;2191:2;2183:6;2180:14;2177:34;;;2207:1;2204;2197:12;2177:34;2245:6;2234:9;2230:22;2220:32;;2290:7;2283:4;2279:2;2275:13;2271:27;2261:55;;2312:1;2309;2302:12;2261:55;2348:2;2335:16;2370:2;2366;2363:10;2360:36;;;2376:18;;:::i;:::-;2416:36;2448:2;2443;2440:1;2436:10;2432:19;2416:36;:::i;:::-;2486:15;;;2517:12;;;;-1:-1:-1;2568:1:3;2564:10;;;;2556:19;;2552:28;;;2592:19;;;2589:39;;;2624:1;2621;2614:12;2589:39;2648:11;;;;2668:160;2684:6;2679:3;2676:15;2668:160;;;2750:35;2777:7;2772:3;2750:35;:::i;:::-;2738:48;;2701:12;;;;2806;;;;2668:160;;;1622:1236;;;;-1:-1:-1;1622:1236:3;;-1:-1:-1;;;;;;;1622:1236:3:o", + "linkReferences": {} }, - methodIdentifiers: { - 'approve(address,uint256)': '095ea7b3', - 'test_rivet_1(uint256,bool,(uint256,bool),(uint256,bool)[])': 'bd012499', + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "test_rivet_1(uint256,bool,(uint256,bool),(uint256,bool)[])": "bd012499" }, - rawMetadata: - '{"compiler":{"version":"0.8.18+commit.87f61d96"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"},{"internalType":"bool","name":"b","type":"bool"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"bool","name":"y","type":"bool"}],"internalType":"struct Playground.Foo","name":"c","type":"tuple"},{"components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"bool","name":"y","type":"bool"}],"internalType":"struct Playground.Foo[]","name":"d","type":"tuple[]"}],"name":"test_rivet_1","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"src/Playground.sol":"Playground"},"evmVersion":"paris","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[]},"sources":{"src/Playground.sol":{"keccak256":"0xf8a0f8b63ed39dcd499f0e82918cad3635c722a92d535654910936b9afc0f979","license":"MIT","urls":["bzz-raw://c4dec678c43023fa20ffb142b4692b17fdc958168aceca87b27c76ae37a1a2b5","dweb:/ipfs/QmSXnE5MBw1Kr6drcdYN67UrHqHepFDyDnZtML4oJDisrP"]}},"version":1}', - metadata: { - compiler: { - version: '0.8.18+commit.87f61d96', + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approve\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"c\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"TestEventRivet1\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"b\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"y\",\"type\":\"bool\"}],\"internalType\":\"struct Playground.Foo\",\"name\":\"c\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"y\",\"type\":\"bool\"}],\"internalType\":\"struct Playground.Foo[]\",\"name\":\"d\",\"type\":\"tuple[]\"}],\"name\":\"test_rivet_1\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Playground.sol\":\"Playground\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":solmate/=../../node_modules/solmate/\"]},\"sources\":{\"src/Playground.sol\":{\"keccak256\":\"0xebc8038a813b72b624e1ae2dd47c572c50dd37b252cc690941cdbc103d38d7b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3338801e10132de4e9904a2cb69f4c756eb9892108a9b660314bbf1395a6faf\",\"dweb:/ipfs/QmUTMdwLjnUaHVTJSYkDAyjNEJafTWv9iML488Q6uyvfuB\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.18+commit.87f61d96" }, - language: 'Solidity', - output: { - abi: [ + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approve", + "anonymous": false + }, { - inputs: [ + "inputs": [ + { + "internalType": "uint256", + "name": "a", + "type": "uint256", + "indexed": true + }, { - internalType: 'address', - name: 'spender', - type: 'address', + "internalType": "bool", + "name": "b", + "type": "bool", + "indexed": false }, { - internalType: 'uint256', - name: 'amount', - type: 'uint256', + "internalType": "string", + "name": "c", + "type": "string", + "indexed": false }, + { + "internalType": "uint256", + "name": "d", + "type": "uint256", + "indexed": true + } ], - stateMutability: 'nonpayable', - type: 'function', - name: 'approve', - outputs: [ + "type": "event", + "name": "TestEventRivet1", + "anonymous": false + }, + { + "inputs": [ { - internalType: 'bool', - name: '', - type: 'bool', + "internalType": "address", + "name": "spender", + "type": "address" }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] }, { - inputs: [ + "inputs": [ { - internalType: 'uint256', - name: 'a', - type: 'uint256', + "internalType": "uint256", + "name": "a", + "type": "uint256" }, { - internalType: 'bool', - name: 'b', - type: 'bool', + "internalType": "bool", + "name": "b", + "type": "bool" }, { - internalType: 'struct Playground.Foo', - name: 'c', - type: 'tuple', - components: [ + "internalType": "struct Playground.Foo", + "name": "c", + "type": "tuple", + "components": [ { - internalType: 'uint256', - name: 'x', - type: 'uint256', + "internalType": "uint256", + "name": "x", + "type": "uint256" }, { - internalType: 'bool', - name: 'y', - type: 'bool', - }, - ], + "internalType": "bool", + "name": "y", + "type": "bool" + } + ] }, { - internalType: 'struct Playground.Foo[]', - name: 'd', - type: 'tuple[]', - components: [ + "internalType": "struct Playground.Foo[]", + "name": "d", + "type": "tuple[]", + "components": [ { - internalType: 'uint256', - name: 'x', - type: 'uint256', + "internalType": "uint256", + "name": "x", + "type": "uint256" }, { - internalType: 'bool', - name: 'y', - type: 'bool', - }, - ], - }, + "internalType": "bool", + "name": "y", + "type": "bool" + } + ] + } ], - stateMutability: 'nonpayable', - type: 'function', - name: 'test_rivet_1', - outputs: [ + "stateMutability": "nonpayable", + "type": "function", + "name": "test_rivet_1", + "outputs": [ { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - ], - }, + "internalType": "bool", + "name": "success", + "type": "bool" + } + ] + } ], - devdoc: { - kind: 'dev', - methods: {}, - version: 1, - }, - userdoc: { - kind: 'user', - methods: {}, - version: 1, + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } }, - settings: { - remappings: [], - optimizer: { - enabled: true, - runs: 200, + "settings": { + "remappings": [ + "solmate/=../../node_modules/solmate/" + ], + "optimizer": { + "enabled": true, + "runs": 200 }, - metadata: { - bytecodeHash: 'ipfs', + "metadata": { + "bytecodeHash": "ipfs" }, - compilationTarget: { - 'src/Playground.sol': 'Playground', + "compilationTarget": { + "src/Playground.sol": "Playground" }, - libraries: {}, + "libraries": {} }, - sources: { - 'src/Playground.sol': { - keccak256: - '0xf8a0f8b63ed39dcd499f0e82918cad3635c722a92d535654910936b9afc0f979', - urls: [ - 'bzz-raw://c4dec678c43023fa20ffb142b4692b17fdc958168aceca87b27c76ae37a1a2b5', - 'dweb:/ipfs/QmSXnE5MBw1Kr6drcdYN67UrHqHepFDyDnZtML4oJDisrP', + "sources": { + "src/Playground.sol": { + "keccak256": "0xebc8038a813b72b624e1ae2dd47c572c50dd37b252cc690941cdbc103d38d7b1", + "urls": [ + "bzz-raw://b3338801e10132de4e9904a2cb69f4c756eb9892108a9b660314bbf1395a6faf", + "dweb:/ipfs/QmUTMdwLjnUaHVTJSYkDAyjNEJafTWv9iML488Q6uyvfuB" ], - license: 'MIT', - }, + "license": "MIT" + } }, - version: 1, + "version": 1 }, - ast: { - absolutePath: 'src/Playground.sol', - id: 35, - exportedSymbols: { - Playground: [34], - }, - nodeType: 'SourceUnit', - src: '32:332:0', - nodes: [ + "ast": { + "absolutePath": "src/Playground.sol", + "id": 504, + "exportedSymbols": { + "Playground": [ + 503 + ] + }, + "nodeType": "SourceUnit", + "src": "32:656:2", + "nodes": [ { - id: 1, - nodeType: 'PragmaDirective', - src: '32:24:0', - nodes: [], - literals: ['solidity', '^', '0.8', '.18'], + "id": 437, + "nodeType": "PragmaDirective", + "src": "32:24:2", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".18" + ] }, { - id: 34, - nodeType: 'ContractDefinition', - src: '58:305:0', - nodes: [ - { - id: 6, - nodeType: 'StructDefinition', - src: '84:50:0', - nodes: [], - canonicalName: 'Playground.Foo', - members: [ + "id": 503, + "nodeType": "ContractDefinition", + "src": "58:629:2", + "nodes": [ + { + "id": 443, + "nodeType": "EventDefinition", + "src": "84:55:2", + "nodes": [], + "anonymous": false, + "eventSelector": "90ec57f18fa7b15c6b8d5e4d1deb90796c74b2ff23d4d0cecad0cb42a96b3128", + "name": "Approve", + "nameLocation": "90:7:2", + "parameters": { + "id": 442, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "114:7:2", + "nodeType": "VariableDeclaration", + "scope": 443, + "src": "98:23:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "98:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 441, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "131:6:2", + "nodeType": "VariableDeclaration", + "scope": 443, + "src": "123:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "123:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "97:41:2" + } + }, + { + "id": 453, + "nodeType": "EventDefinition", + "src": "145:116:2", + "nodes": [], + "anonymous": false, + "eventSelector": "aec1cb26522cfa7f986ea3c986cd2cd3876a44322e5322685750cf15246002cf", + "name": "TestEventRivet1", + "nameLocation": "151:15:2", + "parameters": { + "id": 452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 445, + "indexed": true, + "mutability": "mutable", + "name": "a", + "nameLocation": "192:1:2", + "nodeType": "VariableDeclaration", + "scope": 453, + "src": "176:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "176:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 447, + "indexed": false, + "mutability": "mutable", + "name": "b", + "nameLocation": "208:1:2", + "nodeType": "VariableDeclaration", + "scope": 453, + "src": "203:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 446, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "203:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 449, + "indexed": false, + "mutability": "mutable", + "name": "c", + "nameLocation": "226:1:2", + "nodeType": "VariableDeclaration", + "scope": 453, + "src": "219:8:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 448, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "219:6:2", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 451, + "indexed": true, + "mutability": "mutable", + "name": "d", + "nameLocation": "253:1:2", + "nodeType": "VariableDeclaration", + "scope": 453, + "src": "237:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "237:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "166:94:2" + } + }, + { + "id": 458, + "nodeType": "StructDefinition", + "src": "267:50:2", + "nodes": [], + "canonicalName": "Playground.Foo", + "members": [ { - constant: false, - id: 3, - mutability: 'mutable', - name: 'x', - nameLocation: '110:1:0', - nodeType: 'VariableDeclaration', - scope: 6, - src: '105:6:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - typeName: { - id: 2, - name: 'uint', - nodeType: 'ElementaryTypeName', - src: '105:4:0', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - }, - visibility: 'internal', + "constant": false, + "id": 455, + "mutability": "mutable", + "name": "x", + "nameLocation": "293:1:2", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "288:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 454, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "288:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" }, { - constant: false, - id: 5, - mutability: 'mutable', - name: 'y', - nameLocation: '126:1:0', - nodeType: 'VariableDeclaration', - scope: 6, - src: '121:6:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - typeName: { - id: 4, - name: 'bool', - nodeType: 'ElementaryTypeName', - src: '121:4:0', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - }, - visibility: 'internal', - }, + "constant": false, + "id": 457, + "mutability": "mutable", + "name": "y", + "nameLocation": "309:1:2", + "nodeType": "VariableDeclaration", + "scope": 458, + "src": "304:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 456, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "304:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } ], - name: 'Foo', - nameLocation: '91:3:0', - scope: 34, - visibility: 'public', - }, - { - id: 23, - nodeType: 'FunctionDefinition', - src: '140:141:0', - nodes: [], - body: { - id: 22, - nodeType: 'Block', - src: '279:2:0', - nodes: [], - statements: [], - }, - functionSelector: 'bd012499', - implemented: true, - kind: 'function', - modifiers: [], - name: 'test_rivet_1', - nameLocation: '149:12:0', - parameters: { - id: 18, - nodeType: 'ParameterList', - parameters: [ - { - constant: false, - id: 8, - mutability: 'mutable', - name: 'a', - nameLocation: '179:1:0', - nodeType: 'VariableDeclaration', - scope: 23, - src: '171:9:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - typeName: { - id: 7, - name: 'uint256', - nodeType: 'ElementaryTypeName', - src: '171:7:0', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - }, - visibility: 'internal', - }, - { - constant: false, - id: 10, - mutability: 'mutable', - name: 'b', - nameLocation: '195:1:0', - nodeType: 'VariableDeclaration', - scope: 23, - src: '190:6:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - typeName: { - id: 9, - name: 'bool', - nodeType: 'ElementaryTypeName', - src: '190:4:0', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - }, - visibility: 'internal', - }, - { - constant: false, - id: 13, - mutability: 'mutable', - name: 'c', - nameLocation: '217:1:0', - nodeType: 'VariableDeclaration', - scope: 23, - src: '206:12:0', - stateVariable: false, - storageLocation: 'memory', - typeDescriptions: { - typeIdentifier: 't_struct$_Foo_$6_memory_ptr', - typeString: 'struct Playground.Foo', - }, - typeName: { - id: 12, - nodeType: 'UserDefinedTypeName', - pathNode: { - id: 11, - name: 'Foo', - nameLocations: ['206:3:0'], - nodeType: 'IdentifierPath', - referencedDeclaration: 6, - src: '206:3:0', - }, - referencedDeclaration: 6, - src: '206:3:0', - typeDescriptions: { - typeIdentifier: 't_struct$_Foo_$6_storage_ptr', - typeString: 'struct Playground.Foo', - }, - }, - visibility: 'internal', - }, - { - constant: false, - id: 17, - mutability: 'mutable', - name: 'd', - nameLocation: '241:1:0', - nodeType: 'VariableDeclaration', - scope: 23, - src: '228:14:0', - stateVariable: false, - storageLocation: 'memory', - typeDescriptions: { - typeIdentifier: - 't_array$_t_struct$_Foo_$6_memory_ptr_$dyn_memory_ptr', - typeString: 'struct Playground.Foo[]', - }, - typeName: { - baseType: { - id: 15, - nodeType: 'UserDefinedTypeName', - pathNode: { - id: 14, - name: 'Foo', - nameLocations: ['228:3:0'], - nodeType: 'IdentifierPath', - referencedDeclaration: 6, - src: '228:3:0', - }, - referencedDeclaration: 6, - src: '228:3:0', - typeDescriptions: { - typeIdentifier: 't_struct$_Foo_$6_storage_ptr', - typeString: 'struct Playground.Foo', - }, - }, - id: 16, - nodeType: 'ArrayTypeName', - src: '228:5:0', - typeDescriptions: { - typeIdentifier: - 't_array$_t_struct$_Foo_$6_storage_$dyn_storage_ptr', - typeString: 'struct Playground.Foo[]', - }, - }, - visibility: 'internal', - }, - ], - src: '161:87:0', - }, - returnParameters: { - id: 21, - nodeType: 'ParameterList', - parameters: [ - { - constant: false, - id: 20, - mutability: 'mutable', - name: 'success', - nameLocation: '270:7:0', - nodeType: 'VariableDeclaration', - scope: 23, - src: '265:12:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - typeName: { - id: 19, - name: 'bool', - nodeType: 'ElementaryTypeName', - src: '265:4:0', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - }, - visibility: 'internal', - }, - ], - src: '264:14:0', - }, - scope: 34, - stateMutability: 'nonpayable', - virtual: false, - visibility: 'public', - }, - { - id: 33, - nodeType: 'FunctionDefinition', - src: '287:74:0', - nodes: [], - body: { - id: 32, - nodeType: 'Block', - src: '359:2:0', - nodes: [], - statements: [], - }, - functionSelector: '095ea7b3', - implemented: true, - kind: 'function', - modifiers: [], - name: 'approve', - nameLocation: '296:7:0', - parameters: { - id: 28, - nodeType: 'ParameterList', - parameters: [ - { - constant: false, - id: 25, - mutability: 'mutable', - name: 'spender', - nameLocation: '312:7:0', - nodeType: 'VariableDeclaration', - scope: 33, - src: '304:15:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_address', - typeString: 'address', - }, - typeName: { - id: 24, - name: 'address', - nodeType: 'ElementaryTypeName', - src: '304:7:0', - stateMutability: 'nonpayable', - typeDescriptions: { - typeIdentifier: 't_address', - typeString: 'address', - }, - }, - visibility: 'internal', - }, - { - constant: false, - id: 27, - mutability: 'mutable', - name: 'amount', - nameLocation: '329:6:0', - nodeType: 'VariableDeclaration', - scope: 33, - src: '321:14:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - typeName: { - id: 26, - name: 'uint256', - nodeType: 'ElementaryTypeName', - src: '321:7:0', - typeDescriptions: { - typeIdentifier: 't_uint256', - typeString: 'uint256', - }, - }, - visibility: 'internal', - }, - ], - src: '303:33:0', - }, - returnParameters: { - id: 31, - nodeType: 'ParameterList', - parameters: [ - { - constant: false, - id: 30, - mutability: 'mutable', - name: '', - nameLocation: '-1:-1:-1', - nodeType: 'VariableDeclaration', - scope: 33, - src: '353:4:0', - stateVariable: false, - storageLocation: 'default', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - typeName: { - id: 29, - name: 'bool', - nodeType: 'ElementaryTypeName', - src: '353:4:0', - typeDescriptions: { - typeIdentifier: 't_bool', - typeString: 'bool', - }, - }, - visibility: 'internal', - }, - ], - src: '352:6:0', - }, - scope: 34, - stateMutability: 'nonpayable', - virtual: false, - visibility: 'public', + "name": "Foo", + "nameLocation": "274:3:2", + "scope": 503, + "visibility": "public" }, + { + "id": 485, + "nodeType": "FunctionDefinition", + "src": "323:217:2", + "nodes": [], + "body": { + "id": 484, + "nodeType": "Block", + "src": "462:78:2", + "nodes": [], + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 475, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 460, + "src": "493:1:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 476, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "496:1:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "7269766574", + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "499:7:2", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7f6aebfdd84c5602cbd0373132ff4b990a0cb722941ea11f4eab4d160f7e1422", + "typeString": "literal_string \"rivet\"" + }, + "value": "rivet" + }, + { + "expression": { + "id": 478, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "508:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$458_memory_ptr", + "typeString": "struct Playground.Foo memory" + } + }, + "id": 479, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "510:1:2", + "memberName": "x", + "nodeType": "MemberAccess", + "referencedDeclaration": 455, + "src": "508:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7f6aebfdd84c5602cbd0373132ff4b990a0cb722941ea11f4eab4d160f7e1422", + "typeString": "literal_string \"rivet\"" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 474, + "name": "TestEventRivet1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 453, + "src": "477:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_bool_$_t_string_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (uint256,bool,string memory,uint256)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "477:35:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 481, + "nodeType": "EmitStatement", + "src": "472:40:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "529:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 473, + "id": 483, + "nodeType": "Return", + "src": "522:11:2" + } + ] + }, + "functionSelector": "bd012499", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "test_rivet_1", + "nameLocation": "332:12:2", + "parameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 460, + "mutability": "mutable", + "name": "a", + "nameLocation": "362:1:2", + "nodeType": "VariableDeclaration", + "scope": 485, + "src": "354:9:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "354:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 462, + "mutability": "mutable", + "name": "b", + "nameLocation": "378:1:2", + "nodeType": "VariableDeclaration", + "scope": 485, + "src": "373:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 461, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "373:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "mutability": "mutable", + "name": "c", + "nameLocation": "400:1:2", + "nodeType": "VariableDeclaration", + "scope": 485, + "src": "389:12:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$458_memory_ptr", + "typeString": "struct Playground.Foo" + }, + "typeName": { + "id": 464, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 463, + "name": "Foo", + "nameLocations": [ + "389:3:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 458, + "src": "389:3:2" + }, + "referencedDeclaration": 458, + "src": "389:3:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$458_storage_ptr", + "typeString": "struct Playground.Foo" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 469, + "mutability": "mutable", + "name": "d", + "nameLocation": "424:1:2", + "nodeType": "VariableDeclaration", + "scope": 485, + "src": "411:14:2", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Foo_$458_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Playground.Foo[]" + }, + "typeName": { + "baseType": { + "id": 467, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 466, + "name": "Foo", + "nameLocations": [ + "411:3:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 458, + "src": "411:3:2" + }, + "referencedDeclaration": 458, + "src": "411:3:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$458_storage_ptr", + "typeString": "struct Playground.Foo" + } + }, + "id": 468, + "nodeType": "ArrayTypeName", + "src": "411:5:2", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Foo_$458_storage_$dyn_storage_ptr", + "typeString": "struct Playground.Foo[]" + } + }, + "visibility": "internal" + } + ], + "src": "344:87:2" + }, + "returnParameters": { + "id": 473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 472, + "mutability": "mutable", + "name": "success", + "nameLocation": "453:7:2", + "nodeType": "VariableDeclaration", + "scope": 485, + "src": "448:12:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 471, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "448:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "447:14:2" + }, + "scope": 503, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 502, + "nodeType": "FunctionDefinition", + "src": "546:139:2", + "nodes": [], + "body": { + "id": 501, + "nodeType": "Block", + "src": "618:67:2", + "nodes": [], + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 495, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "641:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 496, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "650:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 494, + "name": "Approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "633:7:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "633:24:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 498, + "nodeType": "EmitStatement", + "src": "628:29:2" + }, + { + "expression": { + "hexValue": "74727565", + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "674:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 493, + "id": 500, + "nodeType": "Return", + "src": "667:11:2" + } + ] + }, + "functionSelector": "095ea7b3", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "555:7:2", + "parameters": { + "id": 490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 487, + "mutability": "mutable", + "name": "spender", + "nameLocation": "571:7:2", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "563:15:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "563:7:2", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "amount", + "nameLocation": "588:6:2", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "580:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "580:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "562:33:2" + }, + "returnParameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 492, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 502, + "src": "612:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 491, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "612:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "611:6:2" + }, + "scope": 503, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } ], - abstract: false, - baseContracts: [], - canonicalName: 'Playground', - contractDependencies: [], - contractKind: 'contract', - fullyImplemented: true, - linearizedBaseContracts: [34], - name: 'Playground', - nameLocation: '67:10:0', - scope: 35, - usedErrors: [], - }, + "abstract": false, + "baseContracts": [], + "canonicalName": "Playground", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 503 + ], + "name": "Playground", + "nameLocation": "67:10:2", + "scope": 504, + "usedErrors": [] + } ], - license: 'MIT', + "license": "MIT" }, - id: 0, -} as const + "id": 2 +} as const; + diff --git a/test/contracts/src/MockERC20.sol b/test/contracts/src/MockERC20.sol new file mode 100644 index 0000000..a28b77a --- /dev/null +++ b/test/contracts/src/MockERC20.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {ERC20} from "solmate/src/tokens/ERC20.sol"; + +contract MockERC20 is ERC20 { + constructor( + string memory _name, + string memory _symbol, + uint8 _decimals + ) ERC20(_name, _symbol, _decimals) {} + + function mint(address to, uint256 value) public virtual { + _mint(to, value); + } + + function burn(address from, uint256 value) public virtual { + _burn(from, value); + } +} diff --git a/test/contracts/src/MockERC721.sol b/test/contracts/src/MockERC721.sol new file mode 100644 index 0000000..5ae6968 --- /dev/null +++ b/test/contracts/src/MockERC721.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.18; + +import {ERC721} from "solmate/src/tokens/ERC721.sol"; + +contract MockERC721 is ERC721 { + constructor( + string memory _name, + string memory _symbol + ) ERC721(_name, _symbol) {} + + function tokenURI( + uint256 + ) public pure virtual override returns (string memory) {} + + function mint(address to, uint256 tokenId) public virtual { + _mint(to, tokenId); + } + + function burn(uint256 tokenId) public virtual { + _burn(tokenId); + } + + function safeMint(address to, uint256 tokenId) public virtual { + _safeMint(to, tokenId); + } + + function safeMint( + address to, + uint256 tokenId, + bytes memory data + ) public virtual { + _safeMint(to, tokenId, data); + } +} diff --git a/test/dapp/App.tsx b/test/dapp/App.tsx index cfb96c9..729111b 100644 --- a/test/dapp/App.tsx +++ b/test/dapp/App.tsx @@ -39,7 +39,8 @@ import { Text, } from '~/design-system' import type { Client } from '~/viem' -import { Playground } from '../contracts/generated' + +import { MockERC20, MockERC721, Playground } from '../contracts/generated' const store = createStore() @@ -99,9 +100,17 @@ export default function App() { - Misc. + Contract: Playground.sol + + + + Contract: MockERC20.sol + + + + Contract: MockERC721.sol - + @@ -533,15 +542,29 @@ function SignTypedData() { ) } -function WriteContract() { +function ContractPlayground() { const { client } = useContext(Context) - const test_1 = async (e: React.FormEvent) => { + const [deployedAddress, setDeployedAddress] = useState(null) + + const deploy = async () => { + const [address] = await client.getAddresses() + const hash = await client.deployContract({ + abi: Playground.abi, + bytecode: Playground.bytecode.object, + account: address, + chain: null, + }) + const transaction = await client.getTransactionReceipt({ hash }) + setDeployedAddress(transaction.contractAddress) + } + + const test_rivet_1 = async (e: React.FormEvent) => { e.preventDefault() const [address] = await client.getAddresses() await client.writeContract({ abi: Playground.abi, - address: '0x6345e50859b0Ce82D8A495ba9894C6C81de385F3', + address: deployedAddress!, account: address, chain: null, functionName: 'test_rivet_1', @@ -549,12 +572,12 @@ function WriteContract() { }) } - const test_2 = async (e: React.FormEvent) => { + const approve = async (e: React.FormEvent) => { e.preventDefault() const [address] = await client.getAddresses() await client.writeContract({ abi: Playground.abi, - address: '0x6345e50859b0Ce82D8A495ba9894C6C81de385F3', + address: deployedAddress!, account: address, chain: null, functionName: 'approve', @@ -562,24 +585,112 @@ function WriteContract() { }) } + if (!deployedAddress) + return ( + + ) return ( - - write: test_rivet_1 - - - - - - write: approve - - - - + + + + ) +} + +function ContractMockERC20() { + const { client } = useContext(Context) + + const [deployedAddress, setDeployedAddress] = useState(null) + + const deploy = async () => { + const [address] = await client.getAddresses() + const hash = await client.deployContract({ + abi: MockERC20.abi, + bytecode: MockERC20.bytecode.object, + account: address, + chain: null, + args: ['MockERC20', 'M20', 18], + }) + const transaction = await client.getTransactionReceipt({ hash }) + setDeployedAddress(transaction.contractAddress) + } + + const mint = async (e: React.FormEvent) => { + e.preventDefault() + const [address] = await client.getAddresses() + await client.writeContract({ + abi: MockERC20.abi, + address: deployedAddress!, + account: address, + chain: null, + functionName: 'mint', + args: [address, parseEther('1')], + }) + } + + if (!deployedAddress) + return ( + + ) + return ( + + + + ) +} + +function ContractMockERC721() { + const { client } = useContext(Context) + + const [deployedAddress, setDeployedAddress] = useState(null) + + const deploy = async () => { + const [address] = await client.getAddresses() + const hash = await client.deployContract({ + abi: MockERC721.abi, + bytecode: MockERC721.bytecode.object, + account: address, + chain: null, + args: ['MockERC721', 'M721'], + }) + const transaction = await client.getTransactionReceipt({ hash }) + setDeployedAddress(transaction.contractAddress) + } + + const mint = async (e: React.FormEvent) => { + e.preventDefault() + const [address] = await client.getAddresses() + await client.writeContract({ + abi: MockERC721.abi, + address: deployedAddress!, + account: address, + chain: null, + functionName: 'mint', + args: [address, 69n], + }) + } + + if (!deployedAddress) + return ( + + ) + return ( + + ) }