From 49f1a6933cc22d1e703d631d5b861b8601ca2231 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Thu, 12 Jul 2018 23:13:47 +0200 Subject: Add fetchAsync util and RPCSubprovider --- packages/subproviders/package.json | 1 + packages/subproviders/src/globals.d.ts | 2 + packages/subproviders/src/index.ts | 1 + .../src/subproviders/rpc_subprovider.ts | 88 ++++++++++++++++++++++ .../subproviders/src/subproviders/subprovider.ts | 26 +++---- packages/types/src/index.ts | 12 +++ packages/utils/package.json | 4 +- packages/utils/src/fetchAsync.ts | 29 +++++++ packages/utils/src/index.ts | 2 + yarn.lock | 8 +- 10 files changed, 154 insertions(+), 19 deletions(-) create mode 100644 packages/subproviders/src/subproviders/rpc_subprovider.ts create mode 100644 packages/utils/src/fetchAsync.ts diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index bdc846e6b..796d87cf4 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -55,6 +55,7 @@ "ethereumjs-util": "^5.1.1", "ganache-core": "0xProject/ganache-core", "hdkey": "^0.7.1", + "json-rpc-error": "2.0.0", "lodash": "^4.17.4", "semaphore-async-await": "^1.5.1", "web3-provider-engine": "14.0.6" diff --git a/packages/subproviders/src/globals.d.ts b/packages/subproviders/src/globals.d.ts index 94e63a32d..6af4c7980 100644 --- a/packages/subproviders/src/globals.d.ts +++ b/packages/subproviders/src/globals.d.ts @@ -4,3 +4,5 @@ declare module '*.json' { export default json; /* tslint:enable */ } + +declare module 'json-rpc-error'; diff --git a/packages/subproviders/src/index.ts b/packages/subproviders/src/index.ts index 71d643f14..9a5597a06 100644 --- a/packages/subproviders/src/index.ts +++ b/packages/subproviders/src/index.ts @@ -10,6 +10,7 @@ export { FakeGasEstimateSubprovider } from './subproviders/fake_gas_estimate_sub export { SignerSubprovider } from './subproviders/signer'; export { RedundantSubprovider } from './subproviders/redundant_subprovider'; export { LedgerSubprovider } from './subproviders/ledger'; +export { RPCSubprovider } from './subproviders/rpc_subprovider'; export { GanacheSubprovider } from './subproviders/ganache'; export { Subprovider } from './subproviders/subprovider'; export { NonceTrackerSubprovider } from './subproviders/nonce_tracker'; diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts new file mode 100644 index 000000000..87c522271 --- /dev/null +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -0,0 +1,88 @@ +import { assert } from '@0xproject/assert'; +import { StatusCodes } from '@0xproject/types'; +import { fetchAsync } from '@0xproject/utils'; +import { JSONRPCRequestPayload } from 'ethereum-types'; +import JsonRpcError = require('json-rpc-error'); + +import { Callback, ErrorCallback } from '../types'; + +import { Subprovider } from './subprovider'; + +/** + * This class implements the [web3-provider-engine](https://github.com/MetaMask/provider-engine) subprovider interface. + * It forwards on JSON RPC requests to the supplied `rpcUrl` endpoint + */ +export class RPCSubprovider extends Subprovider { + private _rpcUrl: string; + constructor(rpcUrl: string) { + super(); + assert.isString('rpcUrl', rpcUrl); + this._rpcUrl = rpcUrl; + } + /** + * This method conforms to the web3-provider-engine interface. + * It is called internally by the ProviderEngine when it is this subproviders + * turn to handle a JSON RPC request. + * @param payload JSON RPC payload + * @param next Callback to call if this subprovider decides not to handle the request + * @param end Callback to call if subprovider handled the request and wants to pass back the request. + */ + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback): Promise { + const finalPayload = Subprovider.createFinalPayload(payload); + const headers = new Headers({ + Accept: 'application/json', + 'Content-Type': 'application/json', + }); + const timeoutMs = 1000; + + let response; + try { + response = await fetchAsync( + this._rpcUrl, + { + method: 'POST', + headers, + body: JSON.stringify(finalPayload), + }, + timeoutMs, + ); + } catch (err) { + end(new JsonRpcError.InternalError(err)); + return; + } + + const text = await response.text(); + if (!response.ok) { + const statusCode = response.status; + switch (statusCode) { + case StatusCodes.MethodNotAllowed: + end(new JsonRpcError.MethodNotFound()); + return; + case StatusCodes.GatewayTimeout: + const errMsg = + 'Gateway timeout. The request took too long to process. This can happen when querying logs over too wide a block range.'; + const err = new Error(errMsg); + end(new JsonRpcError.InternalError(err)); + return; + default: + end(new JsonRpcError.InternalError(text)); + return; + } + } + + let data; + try { + data = JSON.parse(text); + } catch (err) { + end(new JsonRpcError.InternalError(err)); + return; + } + + if (data.error) { + end(data.error); + return; + } + end(null, data.result); + } +} diff --git a/packages/subproviders/src/subproviders/subprovider.ts b/packages/subproviders/src/subproviders/subprovider.ts index ff8378c4e..6f4a8f99e 100644 --- a/packages/subproviders/src/subproviders/subprovider.ts +++ b/packages/subproviders/src/subproviders/subprovider.ts @@ -9,18 +9,7 @@ import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../typ export abstract class Subprovider { // tslint:disable-next-line:underscore-private-and-protected private engine!: Provider; - // Ported from: https://github.com/MetaMask/provider-engine/blob/master/util/random-id.js - private static _getRandomId(): number { - const extraDigits = 3; - const baseTen = 10; - // 13 time digits - const datePart = new Date().getTime() * Math.pow(baseTen, extraDigits); - // 3 random digits - const extraPart = Math.floor(Math.random() * Math.pow(baseTen, extraDigits)); - // 16 digits - return datePart + extraPart; - } - private static _createFinalPayload( + public static createFinalPayload( payload: Partial, ): Partial { const finalPayload = { @@ -32,6 +21,17 @@ export abstract class Subprovider { }; return finalPayload; } + // Ported from: https://github.com/MetaMask/provider-engine/blob/master/util/random-id.js + private static _getRandomId(): number { + const extraDigits = 3; + const baseTen = 10; + // 13 time digits + const datePart = new Date().getTime() * Math.pow(baseTen, extraDigits); + // 3 random digits + const extraPart = Math.floor(Math.random() * Math.pow(baseTen, extraDigits)); + // 16 digits + return datePart + extraPart; + } // tslint:disable-next-line:async-suffix public abstract async handleRequest( payload: JSONRPCRequestPayload, @@ -47,7 +47,7 @@ export abstract class Subprovider { * @returns JSON RPC response payload */ public async emitPayloadAsync(payload: Partial): Promise { - const finalPayload = Subprovider._createFinalPayload(payload); + const finalPayload = Subprovider.createFinalPayload(payload); const response = await promisify(this.engine.sendAsync, this.engine)(finalPayload); return response; } diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 03fa2fe8a..9b1731b9d 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -221,3 +221,15 @@ export enum RevertReason { ValueGreaterThanZero = 'VALUE_GREATER_THAN_ZERO', InvalidMsgValue = 'INVALID_MSG_VALUE', } + +export enum StatusCodes { + Success = 200, + NotFound = 404, + InternalError = 500, + MethodNotAllowed = 405, + GatewayTimeout = 504, +} + +export interface FetchRequest extends RequestInit { + timeout?: number; +} diff --git a/packages/utils/package.json b/packages/utils/package.json index 9168a3538..cb0989836 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -35,14 +35,14 @@ "typescript": "2.7.1" }, "dependencies": { - "ethereum-types": "^0.0.2", + "@0xproject/types": "^1.0.0", "@0xproject/typescript-typings": "^0.4.2", "@types/node": "^8.0.53", - "ethereumjs-util": "^5.1.1", "bignumber.js": "~4.1.0", "ethereum-types": "^0.0.2", "ethereumjs-util": "^5.1.1", "ethers": "3.0.22", + "isomorphic-fetch": "^2.2.1", "js-sha3": "^0.7.0", "lodash": "^4.17.4" }, diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts new file mode 100644 index 000000000..7cb2c1759 --- /dev/null +++ b/packages/utils/src/fetchAsync.ts @@ -0,0 +1,29 @@ +import { FetchRequest } from '@0xproject/types'; +import 'isomorphic-fetch'; + +export const fetchAsync = async ( + endpoint: string, + options: FetchRequest, + timeoutMs: number = 20000, +): Promise => { + let finalOptions; + if ((process as any).browser === true) { + const controller = new AbortController(); + const signal = controller.signal; + setTimeout(() => { + controller.abort(); + }, timeoutMs); + finalOptions = { + signal, + ...options, + }; + } else { + finalOptions = { + timeout: timeoutMs, + ...options, + }; + } + + const response = await fetch(endpoint, finalOptions); + return response; +}; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index fd102cecb..48fd6152e 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -8,3 +8,5 @@ export { logUtils } from './log_utils'; export { abiUtils } from './abi_utils'; export { NULL_BYTES } from './constants'; export { errorUtils } from './error_utils'; +export { fetchAsync } from './fetchAsync'; +export { FetchRequest } from '@0xproject/types'; diff --git a/yarn.lock b/yarn.lock index a8a897511..f6b6a32e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4481,9 +4481,9 @@ ethereumjs-wallet@~0.6.0: utf8 "^2.1.1" uuid "^2.0.1" -ethers@3.0.22: - version "3.0.22" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-3.0.22.tgz#7fab1ea16521705837aa43c15831877b2716b436" +ethers@0xproject/ethers.js#eip-838-reasons, ethers@3.0.22: + version "3.0.18" + resolved "https://codeload.github.com/0xproject/ethers.js/tar.gz/b91342bd200d142af0165d6befddf783c8ae8447" dependencies: aes-js "3.0.0" bn.js "^4.4.0" @@ -6899,7 +6899,7 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: json-rpc-error "^2.0.0" promise-to-callback "^1.0.0" -json-rpc-error@^2.0.0: +json-rpc-error@2.0.0, json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" dependencies: -- cgit From c2a1317c3813b13353eb84e4255284fe99ff8e6c Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Thu, 12 Jul 2018 23:17:35 +0200 Subject: Adjust timeout --- packages/subproviders/src/subproviders/rpc_subprovider.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts index 87c522271..0fb99f87a 100644 --- a/packages/subproviders/src/subproviders/rpc_subprovider.ts +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -34,8 +34,10 @@ export class RPCSubprovider extends Subprovider { Accept: 'application/json', 'Content-Type': 'application/json', }); - const timeoutMs = 1000; + // Since Ethereum nodes have a proclivity for accepting requests and never + // returning a response, we set this quite low (10 seconds). + const timeoutMs = 10000; let response; try { response = await fetchAsync( -- cgit From 1229c61ba420b280708b39c04cc21f31e43ed3cf Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 12:05:02 +0200 Subject: Make timeout configurable on RPCSubprovider --- packages/subproviders/src/subproviders/rpc_subprovider.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts index 0fb99f87a..5c1c3272c 100644 --- a/packages/subproviders/src/subproviders/rpc_subprovider.ts +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -14,10 +14,12 @@ import { Subprovider } from './subprovider'; */ export class RPCSubprovider extends Subprovider { private _rpcUrl: string; - constructor(rpcUrl: string) { + private _requestTimeoutMs: number; + constructor(rpcUrl: string, requestTimeoutMs: number = 20000) { super(); assert.isString('rpcUrl', rpcUrl); this._rpcUrl = rpcUrl; + this._requestTimeoutMs = requestTimeoutMs; } /** * This method conforms to the web3-provider-engine interface. @@ -35,9 +37,6 @@ export class RPCSubprovider extends Subprovider { 'Content-Type': 'application/json', }); - // Since Ethereum nodes have a proclivity for accepting requests and never - // returning a response, we set this quite low (10 seconds). - const timeoutMs = 10000; let response; try { response = await fetchAsync( @@ -47,7 +46,7 @@ export class RPCSubprovider extends Subprovider { headers, body: JSON.stringify(finalPayload), }, - timeoutMs, + this._requestTimeoutMs, ); } catch (err) { end(new JsonRpcError.InternalError(err)); -- cgit From 2e5ff53d7271509accc226e83d76d1785350b1d2 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 12:42:01 +0200 Subject: -fetch'; --- packages/connect/src/http_client.ts | 4 ++-- packages/dev-utils/src/web3_factory.ts | 14 +++++++------- packages/metacoin/test/utils/web3_wrapper.ts | 5 ++--- packages/migrations/src/utils/provider_factory.ts | 9 ++------- packages/sol-compiler/package.json | 1 - packages/sol-compiler/src/compiler.ts | 5 ++--- .../test/integration/ledger_subprovider_test.ts | 7 ++----- .../test/unit/redundant_rpc_subprovider_test.ts | 7 ++----- packages/testnet-faucets/src/ts/handler.ts | 9 ++------- packages/types/src/index.ts | 4 ---- packages/utils/src/fetchAsync.ts | 16 +++++++++------- packages/utils/src/index.ts | 1 - packages/website/package.json | 1 - packages/website/ts/blockchain.ts | 14 ++++---------- packages/website/ts/components/order_json.tsx | 4 ++-- packages/website/ts/components/token_balances.tsx | 4 ++-- packages/website/ts/index.tsx | 1 - packages/website/ts/utils/doc_utils.ts | 6 +++--- packages/website/ts/utils/fetch_utils.ts | 6 +++--- yarn.lock | 2 +- 20 files changed, 45 insertions(+), 75 deletions(-) diff --git a/packages/connect/src/http_client.ts b/packages/connect/src/http_client.ts index f6503835a..f3800d581 100644 --- a/packages/connect/src/http_client.ts +++ b/packages/connect/src/http_client.ts @@ -1,7 +1,7 @@ import { assert } from '@0xproject/assert'; import { schemas } from '@0xproject/json-schemas'; import { SignedOrder } from '@0xproject/types'; -import 'isomorphic-fetch'; +import { fetchAsync } from '@0xproject/utils'; import * as _ from 'lodash'; import * as queryString from 'query-string'; @@ -167,7 +167,7 @@ export class HttpClient implements Client { const headers = new Headers({ 'content-type': 'application/json', }); - const response = await fetch(url, { + const response = await fetchAsync(url, { method: requestType, body: JSON.stringify(payload), headers, diff --git a/packages/dev-utils/src/web3_factory.ts b/packages/dev-utils/src/web3_factory.ts index 362a6c3c6..67112d410 100644 --- a/packages/dev-utils/src/web3_factory.ts +++ b/packages/dev-utils/src/web3_factory.ts @@ -1,7 +1,11 @@ import ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); -import { EmptyWalletSubprovider, FakeGasEstimateSubprovider, GanacheSubprovider } from '@0xproject/subproviders'; +import { + EmptyWalletSubprovider, + FakeGasEstimateSubprovider, + GanacheSubprovider, + RPCSubprovider, +} from '@0xproject/subproviders'; import * as fs from 'fs'; import * as _ from 'lodash'; @@ -49,11 +53,7 @@ export const web3Factory = { }), ); } else { - provider.addProvider( - new RpcSubprovider({ - rpcUrl: config.rpcUrl || constants.RPC_URL, - }), - ); + provider.addProvider(new RPCSubprovider(config.rpcUrl || constants.RPC_URL)); } provider.start(); return provider; diff --git a/packages/metacoin/test/utils/web3_wrapper.ts b/packages/metacoin/test/utils/web3_wrapper.ts index d3655cb6a..a3956e661 100644 --- a/packages/metacoin/test/utils/web3_wrapper.ts +++ b/packages/metacoin/test/utils/web3_wrapper.ts @@ -1,10 +1,9 @@ import { env, EnvVars } from '@0xproject/dev-utils'; -import { GanacheSubprovider, prependSubprovider } from '@0xproject/subproviders'; +import { GanacheSubprovider, prependSubprovider, RPCSubprovider } from '@0xproject/subproviders'; import { errorUtils, logUtils } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as fs from 'fs'; import ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { config } from './config'; import { coverage } from './coverage'; @@ -45,7 +44,7 @@ if (testProvider === ProviderType.Ganache) { }), ); } else { - provider.addProvider(new RpcSubprovider({ rpcUrl: 'http://localhost:8501' })); + provider.addProvider(new RPCSubprovider('http://localhost:8501')); } provider.start(); diff --git a/packages/migrations/src/utils/provider_factory.ts b/packages/migrations/src/utils/provider_factory.ts index 7a217b1e0..cf95cb576 100644 --- a/packages/migrations/src/utils/provider_factory.ts +++ b/packages/migrations/src/utils/provider_factory.ts @@ -1,10 +1,9 @@ -import { LedgerEthereumClient, LedgerSubprovider } from '@0xproject/subproviders'; +import { LedgerEthereumClient, LedgerSubprovider, RPCSubprovider } from '@0xproject/subproviders'; import Eth from '@ledgerhq/hw-app-eth'; // tslint:disable:no-implicit-dependencies import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; import { Provider } from 'ethereum-types'; import ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { constants } from './constants'; @@ -22,11 +21,7 @@ export const providerFactory = { }; const ledgerSubprovider = new LedgerSubprovider(ledgerWalletConfigs); provider.addProvider(ledgerSubprovider); - provider.addProvider( - new RpcSubprovider({ - rpcUrl: constants.RPC_URL, - }), - ); + provider.addProvider(new RPCSubprovider(constants.RPC_URL)); provider.start(); return provider; }, diff --git a/packages/sol-compiler/package.json b/packages/sol-compiler/package.json index e738ab56b..8460420ad 100644 --- a/packages/sol-compiler/package.json +++ b/packages/sol-compiler/package.json @@ -87,7 +87,6 @@ "ethereum-types": "^0.0.2", "chalk": "^2.3.0", "ethereumjs-util": "^5.1.1", - "isomorphic-fetch": "^2.2.1", "lodash": "^4.17.4", "mkdirp": "^0.5.1", "require-from-string": "^2.0.1", diff --git a/packages/sol-compiler/src/compiler.ts b/packages/sol-compiler/src/compiler.ts index bb701a8ce..e61c606be 100644 --- a/packages/sol-compiler/src/compiler.ts +++ b/packages/sol-compiler/src/compiler.ts @@ -8,11 +8,10 @@ import { Resolver, URLResolver, } from '@0xproject/sol-resolver'; -import { logUtils } from '@0xproject/utils'; +import { fetchAsync, logUtils } from '@0xproject/utils'; import chalk from 'chalk'; import * as ethUtil from 'ethereumjs-util'; import * as fs from 'fs'; -import 'isomorphic-fetch'; import * as _ from 'lodash'; import * as path from 'path'; import * as requireFromString from 'require-from-string'; @@ -149,7 +148,7 @@ export class Compiler { } else { logUtils.log(`Downloading ${fullSolcVersion}...`); const url = `${constants.BASE_COMPILER_URL}${fullSolcVersion}`; - const response = await fetch(url); + const response = await fetchAsync(url); const SUCCESS_STATUS = 200; if (response.status !== SUCCESS_STATUS) { throw new Error(`Failed to load ${fullSolcVersion}`); diff --git a/packages/subproviders/test/integration/ledger_subprovider_test.ts b/packages/subproviders/test/integration/ledger_subprovider_test.ts index 196cecf32..e5233fdbc 100644 --- a/packages/subproviders/test/integration/ledger_subprovider_test.ts +++ b/packages/subproviders/test/integration/ledger_subprovider_test.ts @@ -8,9 +8,8 @@ import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; import Web3ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); -import { LedgerSubprovider } from '../../src'; +import { LedgerSubprovider, RPCSubprovider } from '../../src'; import { LedgerEthereumClient } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { fixtureData } from '../utils/fixture_data'; @@ -86,9 +85,7 @@ describe('LedgerSubprovider', () => { before(() => { ledgerProvider = new Web3ProviderEngine(); ledgerProvider.addProvider(ledgerSubprovider); - const httpProvider = new RpcSubprovider({ - rpcUrl: 'http://localhost:8545', - }); + const httpProvider = new RPCSubprovider('http://localhost:8545'); ledgerProvider.addProvider(httpProvider); ledgerProvider.start(); diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index 810fb8f45..e3f204b15 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -3,9 +3,8 @@ import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as Sinon from 'sinon'; import Web3ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); -import { RedundantSubprovider } from '../../src'; +import { RedundantSubprovider, RPCSubprovider } from '../../src'; import { Subprovider } from '../../src/subproviders/subprovider'; import { chaiSetup } from '../chai_setup'; import { ganacheSubprovider } from '../utils/ganache_subprovider'; @@ -39,9 +38,7 @@ describe('RedundantSubprovider', () => { }); it('succeeds when supplied at least one healthy endpoint', (done: DoneCallback) => { provider = new Web3ProviderEngine(); - const nonExistentSubprovider = new RpcSubprovider({ - rpcUrl: 'http://does-not-exist:3000', - }); + const nonExistentSubprovider = new RPCSubprovider('http://does-not-exist:3000'); const handleRequestStub = Sinon.stub(nonExistentSubprovider, 'handleRequest').throws( new Error('REQUEST_FAILED'), ); diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts index 6d26691d6..a725a35f5 100644 --- a/packages/testnet-faucets/src/ts/handler.ts +++ b/packages/testnet-faucets/src/ts/handler.ts @@ -5,9 +5,8 @@ import { Provider } from 'ethereum-types'; import * as express from 'express'; import * as _ from 'lodash'; -import { NonceTrackerSubprovider, PrivateKeyWalletSubprovider } from '@0xproject/subproviders'; +import { NonceTrackerSubprovider, PrivateKeyWalletSubprovider, RPCSubprovider } from '@0xproject/subproviders'; import ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { configs } from './configs'; import { constants } from './constants'; @@ -42,11 +41,7 @@ export class Handler { const engine = new ProviderEngine(); engine.addProvider(new NonceTrackerSubprovider()); engine.addProvider(new PrivateKeyWalletSubprovider(configs.DISPENSER_PRIVATE_KEY)); - engine.addProvider( - new RpcSubprovider({ - rpcUrl, - }), - ); + engine.addProvider(new RPCSubprovider(rpcUrl)); engine.start(); return engine; } diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 9b1731b9d..72e2a726b 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -229,7 +229,3 @@ export enum StatusCodes { MethodNotAllowed = 405, GatewayTimeout = 504, } - -export interface FetchRequest extends RequestInit { - timeout?: number; -} diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts index 7cb2c1759..a009f0c86 100644 --- a/packages/utils/src/fetchAsync.ts +++ b/packages/utils/src/fetchAsync.ts @@ -1,29 +1,31 @@ -import { FetchRequest } from '@0xproject/types'; import 'isomorphic-fetch'; export const fetchAsync = async ( endpoint: string, - options: FetchRequest, + options: RequestInit = {}, timeoutMs: number = 20000, ): Promise => { - let finalOptions; + let optionsWithAbortParam; if ((process as any).browser === true) { const controller = new AbortController(); const signal = controller.signal; setTimeout(() => { controller.abort(); }, timeoutMs); - finalOptions = { + optionsWithAbortParam = { signal, ...options, }; } else { - finalOptions = { + // HACK: the `timeout` param only exists in `node-fetch`, and not on the `isomorphic-fetch` + // `RequestInit` type. Since `isomorphic-fetch` conditionally wraps `node-fetch` when the + // execution environment is `Node.js`, we need to cast it to `any` in that scenario. + optionsWithAbortParam = { timeout: timeoutMs, ...options, - }; + } as any; } - const response = await fetch(endpoint, finalOptions); + const response = await fetch(endpoint, optionsWithAbortParam); return response; }; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 48fd6152e..b8e0b1775 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -9,4 +9,3 @@ export { abiUtils } from './abi_utils'; export { NULL_BYTES } from './constants'; export { errorUtils } from './error_utils'; export { fetchAsync } from './fetchAsync'; -export { FetchRequest } from '@0xproject/types'; diff --git a/packages/website/package.json b/packages/website/package.json index b5b4b6119..2d054693b 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -63,7 +63,6 @@ "thenby": "^1.2.3", "truffle-contract": "2.0.1", "web3-provider-engine": "14.0.6", - "whatwg-fetch": "^2.0.3", "xml-js": "^1.6.4" }, "devDependencies": { diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index 0e6698318..31d8ba2d6 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -15,6 +15,7 @@ import { ledgerEthereumBrowserClientFactoryAsync, LedgerSubprovider, RedundantSubprovider, + RPCSubprovider, SignerSubprovider, Subprovider, } from '@0xproject/subproviders'; @@ -62,7 +63,6 @@ import { errorReporter } from 'ts/utils/error_reporter'; import { utils } from 'ts/utils/utils'; import ProviderEngine = require('web3-provider-engine'); import FilterSubprovider = require('web3-provider-engine/subproviders/filters'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import * as MintableArtifacts from '../contracts/Mintable.json'; @@ -157,9 +157,7 @@ export class Blockchain { provider.addProvider(ledgerSubprovider); provider.addProvider(new FilterSubprovider()); const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists], publicNodeUrl => { - return new RpcSubprovider({ - rpcUrl: publicNodeUrl, - }); + return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); @@ -171,9 +169,7 @@ export class Blockchain { provider.addProvider(new SignerSubprovider(injectedWeb3.currentProvider)); provider.addProvider(new FilterSubprovider()); const rpcSubproviders = _.map(publicNodeUrlsIfExistsForNetworkId, publicNodeUrl => { - return new RpcSubprovider({ - rpcUrl: publicNodeUrl, - }); + return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); @@ -189,9 +185,7 @@ export class Blockchain { provider.addProvider(new FilterSubprovider()); const networkId = constants.NETWORK_ID_MAINNET; const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { - return new RpcSubprovider({ - rpcUrl: publicNodeUrl, - }); + return new RPCSubprovider(publicNodeUrl); }); provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); diff --git a/packages/website/ts/components/order_json.tsx b/packages/website/ts/components/order_json.tsx index 35188c024..7a732de6a 100644 --- a/packages/website/ts/components/order_json.tsx +++ b/packages/website/ts/components/order_json.tsx @@ -1,5 +1,5 @@ import { ECSignature } from '@0xproject/types'; -import { BigNumber, logUtils } from '@0xproject/utils'; +import { BigNumber, fetchAsync, logUtils } from '@0xproject/utils'; import * as _ from 'lodash'; import Paper from 'material-ui/Paper'; import TextField from 'material-ui/TextField'; @@ -148,7 +148,7 @@ You can see and fill it here: ${this.state.shareLink}`); const bitlyRequestUrl = `${constants.URL_BITLY_API}/v3/shorten?access_token=${ configs.BITLY_ACCESS_TOKEN }&longUrl=${longUrl}`; - const response = await fetch(bitlyRequestUrl); + const response = await fetchAsync(bitlyRequestUrl); const responseBody = await response.text(); const bodyObj = JSON.parse(responseBody); if (response.status !== 200 || bodyObj.status_code !== 200) { diff --git a/packages/website/ts/components/token_balances.tsx b/packages/website/ts/components/token_balances.tsx index 3fae83c00..1f2dfccb0 100644 --- a/packages/website/ts/components/token_balances.tsx +++ b/packages/website/ts/components/token_balances.tsx @@ -5,7 +5,7 @@ import { Styles, utils as sharedUtils, } from '@0xproject/react-shared'; -import { BigNumber, errorUtils, logUtils } from '@0xproject/utils'; +import { BigNumber, errorUtils, fetchAsync, logUtils } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as _ from 'lodash'; import Dialog from 'material-ui/Dialog'; @@ -548,7 +548,7 @@ export class TokenBalances extends React.Component { - const response = await fetch(s3DocJsonRoot); + const response = await fetchAsync(s3DocJsonRoot); if (response.status !== 200) { // TODO: Show the user an error message when the docs fail to load const errMsg = await response.text(); @@ -73,7 +73,7 @@ export const docUtils = { }, async getJSONDocFileAsync(filePath: string, s3DocJsonRoot: string): Promise { const endpoint = `${s3DocJsonRoot}/${filePath}`; - const response = await fetch(endpoint); + const response = await fetchAsync(endpoint); if (response.status !== 200) { // TODO: Show the user an error message when the docs fail to load const errMsg = await response.text(); diff --git a/packages/website/ts/utils/fetch_utils.ts b/packages/website/ts/utils/fetch_utils.ts index 513f7e479..f159e3180 100644 --- a/packages/website/ts/utils/fetch_utils.ts +++ b/packages/website/ts/utils/fetch_utils.ts @@ -1,4 +1,4 @@ -import { logUtils } from '@0xproject/utils'; +import { fetchAsync, logUtils } from '@0xproject/utils'; import * as _ from 'lodash'; import * as queryString from 'query-string'; @@ -19,14 +19,14 @@ export const fetchUtils = { async requestAsync(baseUrl: string, path: string, queryParams?: object): Promise { const query = queryStringFromQueryParams(queryParams); const url = `${baseUrl}${path}${query}`; - const response = await fetch(url); + const response = await fetchAsync(url); logErrorIfPresent(response, url); const result = await response.json(); return result; }, async postAsync(baseUrl: string, path: string, body: object): Promise { const url = `${baseUrl}${path}`; - const response = await fetch(url, { + const response = await fetchAsync(url, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/yarn.lock b/yarn.lock index f6b6a32e0..53fd5f184 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13270,7 +13270,7 @@ websocket@^1.0.24, websocket@^1.0.25: typedarray-to-buffer "^3.1.2" yaeti "^0.0.6" -whatwg-fetch@2.0.3, whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.3: +whatwg-fetch@2.0.3, whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" -- cgit From 701ea5c46bb1d25ffc2e6962042ba3e0c0277454 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 13:05:21 +0200 Subject: Add typedoc for json-rpc-error package --- packages/subproviders/src/globals.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/subproviders/src/globals.d.ts b/packages/subproviders/src/globals.d.ts index 6af4c7980..837ed287d 100644 --- a/packages/subproviders/src/globals.d.ts +++ b/packages/subproviders/src/globals.d.ts @@ -5,4 +5,12 @@ declare module '*.json' { /* tslint:enable */ } -declare module 'json-rpc-error'; +// TODO: Move this to `typescript-typings` once it is more fleshed out +declare module 'json-rpc-error' { + export class InternalError extends Error { + constructor(err: Error | string); + } + export class MethodNotFound extends Error { + constructor(); + } +} -- cgit From 6ce662c7a4d04540920bc2a11a376c71bc051bb0 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 13:05:38 +0200 Subject: Update deps --- packages/connect/package.json | 1 - packages/testnet-faucets/package.json | 2 +- yarn.lock | 37 ++++++++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/packages/connect/package.json b/packages/connect/package.json index cc68d34f4..343df4031 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -56,7 +56,6 @@ "@0xproject/types": "^0.8.2", "@0xproject/typescript-typings": "^0.4.2", "@0xproject/utils": "^0.7.2", - "isomorphic-fetch": "^2.2.1", "lodash": "^4.17.4", "query-string": "^5.0.1", "sinon": "^4.0.0", diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index 72ab8f61b..2aea0a47b 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -18,7 +18,7 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^0.38.0", + "0x.js": "0.38.4", "@0xproject/subproviders": "^0.10.5", "@0xproject/web3-wrapper": "^0.7.2", "@0xproject/typescript-typings": "^0.4.2", diff --git a/yarn.lock b/yarn.lock index 53fd5f184..f2eba5d47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,23 @@ # yarn lockfile v1 +"0x.js@0.38.4": + version "0.38.4" + resolved "https://registry.yarnpkg.com/0x.js/-/0x.js-0.38.4.tgz#735c12d3b8d68945caab87990e6cdd24bf5bc070" + dependencies: + "@0xproject/assert" "^0.2.12" + "@0xproject/base-contract" "^0.3.4" + "@0xproject/contract-wrappers" "^0.0.5" + "@0xproject/order-utils" "^0.0.7" + "@0xproject/order-watcher" "^0.0.6" + "@0xproject/sol-compiler" "^0.5.2" + "@0xproject/types" "^0.8.1" + "@0xproject/typescript-typings" "^0.4.1" + "@0xproject/utils" "^0.7.1" + "@0xproject/web3-wrapper" "^0.7.1" + ethers "3.0.22" + lodash "4.17.10" + "8fold-marked@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/8fold-marked/-/8fold-marked-0.3.9.tgz#bb89c645612f8ccfaffac1ca6e3c11f168c9cf59" @@ -122,6 +139,24 @@ ethereumjs-util "5.1.5" lodash "4.17.10" +"@0xproject/order-watcher@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@0xproject/order-watcher/-/order-watcher-0.0.6.tgz#85a8fb21e5755bb555f427b12d64d10b89b332e6" + dependencies: + "@0xproject/assert" "^0.2.12" + "@0xproject/base-contract" "^0.3.4" + "@0xproject/contract-wrappers" "^0.0.5" + "@0xproject/fill-scenarios" "^0.0.4" + "@0xproject/json-schemas" "^0.8.1" + "@0xproject/order-utils" "^0.0.7" + "@0xproject/types" "^0.8.1" + "@0xproject/typescript-typings" "^0.4.1" + "@0xproject/utils" "^0.7.1" + "@0xproject/web3-wrapper" "^0.7.1" + bintrees "1.0.2" + ethers "3.0.22" + lodash "4.17.10" + "@0xproject/types@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@0xproject/types/-/types-0.5.0.tgz#ba3cfbc11a8c6344b57c9680aa7df2ea84b9bf05" @@ -1834,7 +1869,7 @@ bindings@^1.2.1, bindings@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" -bintrees@^1.0.2: +bintrees@1.0.2, bintrees@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" -- cgit From 512502ca0873a290accb53777ca9d93f8d28e84b Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 14:26:02 +0200 Subject: Export Web3ProviderEngine from subproviders package --- packages/contract-wrappers/package.json | 3 +-- packages/contract-wrappers/test/erc20_wrapper_test.ts | 3 +-- packages/contract-wrappers/test/erc721_wrapper_test.ts | 3 +-- packages/dev-utils/package.json | 3 +-- packages/dev-utils/src/web3_factory.ts | 7 +++---- packages/metacoin/package.json | 3 +-- packages/metacoin/test/utils/web3_wrapper.ts | 5 ++--- packages/migrations/package.json | 3 +-- packages/migrations/src/utils/provider_factory.ts | 5 ++--- packages/subproviders/src/index.ts | 1 + packages/subproviders/src/utils/subprovider_utils.ts | 4 ++-- .../subproviders/test/integration/ledger_subprovider_test.ts | 3 +-- .../subproviders/test/unit/eth_lightwallet_subprovider_test.ts | 3 +-- packages/subproviders/test/unit/ledger_subprovider_test.ts | 3 +-- .../subproviders/test/unit/mnemonic_wallet_subprovider_test.ts | 3 +-- .../subproviders/test/unit/nonce_tracker_subprovider_test.ts | 3 +-- .../test/unit/private_key_wallet_subprovider_test.ts | 3 +-- .../subproviders/test/unit/redundant_rpc_subprovider_test.ts | 3 +-- packages/testnet-faucets/package.json | 3 +-- packages/testnet-faucets/src/ts/handler.ts | 10 +++++++--- packages/website/ts/blockchain.ts | 8 ++++---- 21 files changed, 35 insertions(+), 47 deletions(-) diff --git a/packages/contract-wrappers/package.json b/packages/contract-wrappers/package.json index b8fd8bd50..a781496ab 100644 --- a/packages/contract-wrappers/package.json +++ b/packages/contract-wrappers/package.json @@ -70,8 +70,7 @@ "sinon": "^4.0.0", "source-map-support": "^0.5.0", "tslint": "5.8.0", - "typescript": "2.7.1", - "web3-provider-engine": "14.0.6" + "typescript": "2.7.1" }, "dependencies": { "@0xproject/assert": "^0.3.0", diff --git a/packages/contract-wrappers/test/erc20_wrapper_test.ts b/packages/contract-wrappers/test/erc20_wrapper_test.ts index 0011508e0..cf7ac527e 100644 --- a/packages/contract-wrappers/test/erc20_wrapper_test.ts +++ b/packages/contract-wrappers/test/erc20_wrapper_test.ts @@ -1,11 +1,10 @@ import { BlockchainLifecycle, callbackErrorReporter } from '@0xproject/dev-utils'; -import { EmptyWalletSubprovider } from '@0xproject/subproviders'; +import { EmptyWalletSubprovider, Web3ProviderEngine } from '@0xproject/subproviders'; import { DoneCallback } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import { Provider } from 'ethereum-types'; import 'mocha'; -import Web3ProviderEngine = require('web3-provider-engine'); import { BlockParamLiteral, diff --git a/packages/contract-wrappers/test/erc721_wrapper_test.ts b/packages/contract-wrappers/test/erc721_wrapper_test.ts index 96b8fcf1d..f005ac2e0 100644 --- a/packages/contract-wrappers/test/erc721_wrapper_test.ts +++ b/packages/contract-wrappers/test/erc721_wrapper_test.ts @@ -1,11 +1,10 @@ import { BlockchainLifecycle, callbackErrorReporter } from '@0xproject/dev-utils'; -import { EmptyWalletSubprovider } from '@0xproject/subproviders'; +import { EmptyWalletSubprovider, Web3ProviderEngine } from '@0xproject/subproviders'; import { DoneCallback } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import { Provider } from 'ethereum-types'; import 'mocha'; -import Web3ProviderEngine = require('web3-provider-engine'); import { BlockParamLiteral, diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 1808e23e4..f0ef24684 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -51,8 +51,7 @@ "ethereum-types": "^0.0.2", "@0xproject/typescript-typings": "^0.4.2", "@0xproject/web3-wrapper": "^0.7.2", - "lodash": "^4.17.4", - "web3-provider-engine": "14.0.6" + "lodash": "^4.17.4" }, "publishConfig": { "access": "public" diff --git a/packages/dev-utils/src/web3_factory.ts b/packages/dev-utils/src/web3_factory.ts index 67112d410..8e713fa68 100644 --- a/packages/dev-utils/src/web3_factory.ts +++ b/packages/dev-utils/src/web3_factory.ts @@ -1,10 +1,9 @@ -import ProviderEngine = require('web3-provider-engine'); - import { EmptyWalletSubprovider, FakeGasEstimateSubprovider, GanacheSubprovider, RPCSubprovider, + Web3ProviderEngine, } from '@0xproject/subproviders'; import * as fs from 'fs'; import * as _ from 'lodash'; @@ -20,8 +19,8 @@ export interface Web3Config { } export const web3Factory = { - getRpcProvider(config: Web3Config = {}): ProviderEngine { - const provider = new ProviderEngine(); + getRpcProvider(config: Web3Config = {}): Web3ProviderEngine { + const provider = new Web3ProviderEngine(); const hasAddresses = _.isUndefined(config.hasAddresses) || config.hasAddresses; config.shouldUseFakeGasEstimate = _.isUndefined(config.shouldUseFakeGasEstimate) || config.shouldUseFakeGasEstimate; diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 9b96441c4..744e9e69a 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -44,8 +44,7 @@ "ethereum-types": "^0.0.2", "ethers": "3.0.22", "lodash": "^4.17.4", - "run-s": "^0.0.0", - "web3-provider-engine": "14.0.6" + "run-s": "^0.0.0" }, "devDependencies": { "@0xproject/dev-utils": "^0.4.5", diff --git a/packages/metacoin/test/utils/web3_wrapper.ts b/packages/metacoin/test/utils/web3_wrapper.ts index a3956e661..36bd6343f 100644 --- a/packages/metacoin/test/utils/web3_wrapper.ts +++ b/packages/metacoin/test/utils/web3_wrapper.ts @@ -1,9 +1,8 @@ import { env, EnvVars } from '@0xproject/dev-utils'; -import { GanacheSubprovider, prependSubprovider, RPCSubprovider } from '@0xproject/subproviders'; +import { GanacheSubprovider, prependSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0xproject/subproviders'; import { errorUtils, logUtils } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as fs from 'fs'; -import ProviderEngine = require('web3-provider-engine'); import { config } from './config'; import { coverage } from './coverage'; @@ -29,7 +28,7 @@ switch (process.env.TEST_PROVIDER) { throw errorUtils.spawnSwitchErr('TEST_PROVIDER', process.env.TEST_PROVIDER); } -export const provider = new ProviderEngine(); +export const provider = new Web3ProviderEngine(); if (testProvider === ProviderType.Ganache) { provider.addProvider( new GanacheSubprovider({ diff --git a/packages/migrations/package.json b/packages/migrations/package.json index 0b7ab8ae2..d4aa73912 100644 --- a/packages/migrations/package.json +++ b/packages/migrations/package.json @@ -60,8 +60,7 @@ "@ledgerhq/hw-app-eth": "^4.3.0", "ethereum-types": "^0.0.2", "ethers": "3.0.22", - "lodash": "^4.17.4", - "web3-provider-engine": "14.0.6" + "lodash": "^4.17.4" }, "optionalDependencies": { "@ledgerhq/hw-transport-node-hid": "^4.3.0" diff --git a/packages/migrations/src/utils/provider_factory.ts b/packages/migrations/src/utils/provider_factory.ts index cf95cb576..5f69b258d 100644 --- a/packages/migrations/src/utils/provider_factory.ts +++ b/packages/migrations/src/utils/provider_factory.ts @@ -1,9 +1,8 @@ -import { LedgerEthereumClient, LedgerSubprovider, RPCSubprovider } from '@0xproject/subproviders'; +import { LedgerEthereumClient, LedgerSubprovider, RPCSubprovider, Web3ProviderEngine } from '@0xproject/subproviders'; import Eth from '@ledgerhq/hw-app-eth'; // tslint:disable:no-implicit-dependencies import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; import { Provider } from 'ethereum-types'; -import ProviderEngine = require('web3-provider-engine'); import { constants } from './constants'; @@ -14,7 +13,7 @@ async function ledgerEthereumNodeJsClientFactoryAsync(): Promise { - const provider = new ProviderEngine(); + const provider = new Web3ProviderEngine(); const ledgerWalletConfigs = { networkId: constants.KOVAN_NETWORK_ID, ledgerEthereumClientFactoryAsync: ledgerEthereumNodeJsClientFactoryAsync, diff --git a/packages/subproviders/src/index.ts b/packages/subproviders/src/index.ts index 9a5597a06..9d4480e59 100644 --- a/packages/subproviders/src/index.ts +++ b/packages/subproviders/src/index.ts @@ -1,5 +1,6 @@ import Eth from '@ledgerhq/hw-app-eth'; import TransportU2F from '@ledgerhq/hw-transport-u2f'; +export import Web3ProviderEngine = require('web3-provider-engine'); export { ECSignature } from '@0xproject/types'; import { LedgerEthereumClient } from './types'; diff --git a/packages/subproviders/src/utils/subprovider_utils.ts b/packages/subproviders/src/utils/subprovider_utils.ts index 24ebedd06..beda408ab 100644 --- a/packages/subproviders/src/utils/subprovider_utils.ts +++ b/packages/subproviders/src/utils/subprovider_utils.ts @@ -1,4 +1,4 @@ -import ProviderEngine = require('web3-provider-engine'); +import Web3ProviderEngine = require('web3-provider-engine'); import { Subprovider } from '../subproviders/subprovider'; @@ -7,7 +7,7 @@ import { Subprovider } from '../subproviders/subprovider'; * @param provider Given provider * @param subprovider Subprovider to prepend */ -export function prependSubprovider(provider: ProviderEngine, subprovider: Subprovider): void { +export function prependSubprovider(provider: Web3ProviderEngine, subprovider: Subprovider): void { subprovider.setEngine(provider); // HACK: We use implementation details of provider engine here // https://github.com/MetaMask/provider-engine/blob/master/index.js#L68 diff --git a/packages/subproviders/test/integration/ledger_subprovider_test.ts b/packages/subproviders/test/integration/ledger_subprovider_test.ts index e5233fdbc..103e8f952 100644 --- a/packages/subproviders/test/integration/ledger_subprovider_test.ts +++ b/packages/subproviders/test/integration/ledger_subprovider_test.ts @@ -7,9 +7,8 @@ import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { LedgerSubprovider, RPCSubprovider } from '../../src'; +import { LedgerSubprovider, RPCSubprovider, Web3ProviderEngine } from '../../src'; import { LedgerEthereumClient } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { fixtureData } from '../utils/fixture_data'; diff --git a/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts b/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts index f17c21f02..063817a95 100644 --- a/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/eth_lightwallet_subprovider_test.ts @@ -2,9 +2,8 @@ import * as chai from 'chai'; import * as lightwallet from 'eth-lightwallet'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { EthLightwalletSubprovider } from '../../src'; +import { EthLightwalletSubprovider, Web3ProviderEngine } from '../../src'; import { DoneCallback } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { fixtureData } from '../utils/fixture_data'; diff --git a/packages/subproviders/test/unit/ledger_subprovider_test.ts b/packages/subproviders/test/unit/ledger_subprovider_test.ts index 3b57e125b..edff5144e 100644 --- a/packages/subproviders/test/unit/ledger_subprovider_test.ts +++ b/packages/subproviders/test/unit/ledger_subprovider_test.ts @@ -2,9 +2,8 @@ import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; import * as _ from 'lodash'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { LedgerSubprovider } from '../../src'; +import { LedgerSubprovider, Web3ProviderEngine } from '../../src'; import { DoneCallback, LedgerCommunicationClient, diff --git a/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts b/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts index 51ba7094c..f2bdda3cd 100644 --- a/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/mnemonic_wallet_subprovider_test.ts @@ -1,9 +1,8 @@ import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { GanacheSubprovider, MnemonicWalletSubprovider } from '../../src/'; +import { GanacheSubprovider, MnemonicWalletSubprovider, Web3ProviderEngine } from '../../src/'; import { DoneCallback, WalletSubproviderErrors } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { fixtureData } from '../utils/fixture_data'; diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index fa33cd50a..c437d0815 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -1,11 +1,10 @@ import * as chai from 'chai'; -import Web3ProviderEngine = require('web3-provider-engine'); import FixtureSubprovider = require('web3-provider-engine/subproviders/fixture'); import { promisify } from '@0xproject/utils'; import EthereumTx = require('ethereumjs-tx'); -import { NonceTrackerSubprovider } from '../../src'; +import { NonceTrackerSubprovider, Web3ProviderEngine } from '../../src'; import { chaiSetup } from '../chai_setup'; const expect = chai.expect; diff --git a/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts b/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts index ab321bcff..95773145f 100644 --- a/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts +++ b/packages/subproviders/test/unit/private_key_wallet_subprovider_test.ts @@ -1,9 +1,8 @@ import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as ethUtils from 'ethereumjs-util'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { GanacheSubprovider, PrivateKeyWalletSubprovider } from '../../src/'; +import { GanacheSubprovider, PrivateKeyWalletSubprovider, Web3ProviderEngine } from '../../src/'; import { DoneCallback, WalletSubproviderErrors } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { fixtureData } from '../utils/fixture_data'; diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index e3f204b15..e30d2f74e 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -2,9 +2,8 @@ import { DoneCallback } from '@0xproject/types'; import * as chai from 'chai'; import { JSONRPCResponsePayload } from 'ethereum-types'; import * as Sinon from 'sinon'; -import Web3ProviderEngine = require('web3-provider-engine'); -import { RedundantSubprovider, RPCSubprovider } from '../../src'; +import { RedundantSubprovider, RPCSubprovider, Web3ProviderEngine } from '../../src'; import { Subprovider } from '../../src/subproviders/subprovider'; import { chaiSetup } from '../chai_setup'; import { ganacheSubprovider } from '../utils/ganache_subprovider'; diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index 2aea0a47b..442f488c9 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -28,8 +28,7 @@ "ethereumjs-util": "^5.1.1", "express": "^4.15.2", "lodash": "^4.17.4", - "rollbar": "^0.6.5", - "web3-provider-engine": "14.0.6" + "rollbar": "^0.6.5" }, "devDependencies": { "@0xproject/tslint-config": "^0.4.21", diff --git a/packages/testnet-faucets/src/ts/handler.ts b/packages/testnet-faucets/src/ts/handler.ts index a725a35f5..0f61159fa 100644 --- a/packages/testnet-faucets/src/ts/handler.ts +++ b/packages/testnet-faucets/src/ts/handler.ts @@ -5,8 +5,12 @@ import { Provider } from 'ethereum-types'; import * as express from 'express'; import * as _ from 'lodash'; -import { NonceTrackerSubprovider, PrivateKeyWalletSubprovider, RPCSubprovider } from '@0xproject/subproviders'; -import ProviderEngine = require('web3-provider-engine'); +import { + NonceTrackerSubprovider, + PrivateKeyWalletSubprovider, + RPCSubprovider, + Web3ProviderEngine, +} from '@0xproject/subproviders'; import { configs } from './configs'; import { constants } from './constants'; @@ -38,7 +42,7 @@ export class Handler { if (_.isUndefined(configs.DISPENSER_PRIVATE_KEY)) { throw new Error('Dispenser Private key not found'); } - const engine = new ProviderEngine(); + const engine = new Web3ProviderEngine(); engine.addProvider(new NonceTrackerSubprovider()); engine.addProvider(new PrivateKeyWalletSubprovider(configs.DISPENSER_PRIVATE_KEY)); engine.addProvider(new RPCSubprovider(rpcUrl)); diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index 31d8ba2d6..099171c45 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -18,6 +18,7 @@ import { RPCSubprovider, SignerSubprovider, Subprovider, + Web3ProviderEngine, } from '@0xproject/subproviders'; import { BlockParam, @@ -61,7 +62,6 @@ import { configs } from 'ts/utils/configs'; import { constants } from 'ts/utils/constants'; import { errorReporter } from 'ts/utils/error_reporter'; import { utils } from 'ts/utils/utils'; -import ProviderEngine = require('web3-provider-engine'); import FilterSubprovider = require('web3-provider-engine/subproviders/filters'); import * as MintableArtifacts from '../contracts/Mintable.json'; @@ -148,7 +148,7 @@ export class Blockchain { if (!isU2FSupported) { throw new Error('Cannot update providerType to LEDGER without U2F support'); } - const provider = new ProviderEngine(); + const provider = new Web3ProviderEngine(); const ledgerWalletConfigs = { networkId: networkIdIfExists, ledgerEthereumClientFactoryAsync: ledgerEthereumBrowserClientFactoryAsync, @@ -165,7 +165,7 @@ export class Blockchain { } else if (doesInjectedWeb3Exist && isPublicNodeAvailableForNetworkId) { // We catch all requests involving a users account and send it to the injectedWeb3 // instance. All other requests go to the public hosted node. - const provider = new ProviderEngine(); + const provider = new Web3ProviderEngine(); provider.addProvider(new SignerSubprovider(injectedWeb3.currentProvider)); provider.addProvider(new FilterSubprovider()); const rpcSubproviders = _.map(publicNodeUrlsIfExistsForNetworkId, publicNodeUrl => { @@ -181,7 +181,7 @@ export class Blockchain { // If no injectedWeb3 instance, all requests fallback to our public hosted mainnet/testnet node // We do this so that users can still browse the 0x Portal DApp even if they do not have web3 // injected into their browser. - const provider = new ProviderEngine(); + const provider = new Web3ProviderEngine(); provider.addProvider(new FilterSubprovider()); const networkId = constants.NETWORK_ID_MAINNET; const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { -- cgit From 9d24341d9405a91f9153abd3f21569326392d246 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 14:35:31 +0200 Subject: Export Web3ProviderEngine and RPCSubprovider from 0x.js --- packages/0x.js/package.json | 1 + packages/0x.js/src/index.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index d77f31a69..966770cf0 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -105,6 +105,7 @@ "@0xproject/contract-wrappers": "^0.1.0", "@0xproject/order-utils": "^1.0.0", "@0xproject/sol-compiler": "^0.5.3", + "@0xproject/subproviders": "^0.10.5", "@0xproject/types": "^1.0.0", "@0xproject/typescript-typings": "^0.4.2", "@0xproject/utils": "^0.7.2", diff --git a/packages/0x.js/src/index.ts b/packages/0x.js/src/index.ts index 6dfc0bacc..95faa860d 100644 --- a/packages/0x.js/src/index.ts +++ b/packages/0x.js/src/index.ts @@ -1,6 +1,7 @@ export { ZeroEx } from './0x'; export { MessagePrefixType, MessagePrefixOpts } from '@0xproject/order-utils'; +export { Web3ProviderEngine, RPCSubprovider } from '@0xproject/subproviders'; export { ExchangeContractErrs, -- cgit From 4c7fd5a4e8b745bfdbfca20b5495f48332aae90d Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 15:03:13 +0200 Subject: Replace process.browser with detect-node library --- packages/utils/package.json | 1 + packages/utils/src/fetchAsync.ts | 3 ++- packages/utils/src/globals.d.ts | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/utils/package.json b/packages/utils/package.json index cb0989836..a454b35ee 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -39,6 +39,7 @@ "@0xproject/typescript-typings": "^0.4.2", "@types/node": "^8.0.53", "bignumber.js": "~4.1.0", + "detect-node": "2.0.3", "ethereum-types": "^0.0.2", "ethereumjs-util": "^5.1.1", "ethers": "3.0.22", diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts index a009f0c86..47d87815e 100644 --- a/packages/utils/src/fetchAsync.ts +++ b/packages/utils/src/fetchAsync.ts @@ -1,3 +1,4 @@ +import isNode = require('detect-node'); import 'isomorphic-fetch'; export const fetchAsync = async ( @@ -6,7 +7,7 @@ export const fetchAsync = async ( timeoutMs: number = 20000, ): Promise => { let optionsWithAbortParam; - if ((process as any).browser === true) { + if (isNode) { const controller = new AbortController(); const signal = controller.signal; setTimeout(() => { diff --git a/packages/utils/src/globals.d.ts b/packages/utils/src/globals.d.ts index 94e63a32d..98a4b56fc 100644 --- a/packages/utils/src/globals.d.ts +++ b/packages/utils/src/globals.d.ts @@ -4,3 +4,7 @@ declare module '*.json' { export default json; /* tslint:enable */ } + +declare module 'detect-node' { + export const isNode: boolean; +} -- cgit From 70c3515c94e731f060aa8c532eb52d845f07b20f Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 15:04:17 +0200 Subject: Make createFinalPayload protected --- packages/subproviders/src/subproviders/rpc_subprovider.ts | 2 +- packages/subproviders/src/subproviders/subprovider.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts index 5c1c3272c..cb08e729e 100644 --- a/packages/subproviders/src/subproviders/rpc_subprovider.ts +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -31,7 +31,7 @@ export class RPCSubprovider extends Subprovider { */ // tslint:disable-next-line:prefer-function-over-method async-suffix public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback): Promise { - const finalPayload = Subprovider.createFinalPayload(payload); + const finalPayload = Subprovider._createFinalPayload(payload); const headers = new Headers({ Accept: 'application/json', 'Content-Type': 'application/json', diff --git a/packages/subproviders/src/subproviders/subprovider.ts b/packages/subproviders/src/subproviders/subprovider.ts index 6f4a8f99e..5dc273569 100644 --- a/packages/subproviders/src/subproviders/subprovider.ts +++ b/packages/subproviders/src/subproviders/subprovider.ts @@ -9,7 +9,7 @@ import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../typ export abstract class Subprovider { // tslint:disable-next-line:underscore-private-and-protected private engine!: Provider; - public static createFinalPayload( + protected static _createFinalPayload( payload: Partial, ): Partial { const finalPayload = { @@ -47,7 +47,7 @@ export abstract class Subprovider { * @returns JSON RPC response payload */ public async emitPayloadAsync(payload: Partial): Promise { - const finalPayload = Subprovider.createFinalPayload(payload); + const finalPayload = Subprovider._createFinalPayload(payload); const response = await promisify(this.engine.sendAsync, this.engine)(finalPayload); return response; } -- cgit From f5293e6c38b7e4e5352379e2fbd4d03c02b455b2 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 15:09:51 +0200 Subject: Fix linter --- packages/subproviders/src/subproviders/rpc_subprovider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts index cb08e729e..dac821d01 100644 --- a/packages/subproviders/src/subproviders/rpc_subprovider.ts +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -30,7 +30,7 @@ export class RPCSubprovider extends Subprovider { * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ // tslint:disable-next-line:prefer-function-over-method async-suffix - public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback): Promise { + public async handleRequest(payload: JSONRPCRequestPayload, _next: Callback, end: ErrorCallback): Promise { const finalPayload = Subprovider._createFinalPayload(payload); const headers = new Headers({ Accept: 'application/json', -- cgit From 350989bbec59b731a11c69237bec8625f2331ce2 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 15:25:37 +0200 Subject: Move type defs to typescript-typingsd --- packages/subproviders/src/globals.d.ts | 10 ---------- packages/typescript-typings/types/detect-node/index.d.ts | 3 +++ packages/typescript-typings/types/json-rpc-error/index.d.ts | 8 ++++++++ packages/utils/src/globals.d.ts | 4 ---- 4 files changed, 11 insertions(+), 14 deletions(-) create mode 100644 packages/typescript-typings/types/detect-node/index.d.ts create mode 100644 packages/typescript-typings/types/json-rpc-error/index.d.ts diff --git a/packages/subproviders/src/globals.d.ts b/packages/subproviders/src/globals.d.ts index 837ed287d..94e63a32d 100644 --- a/packages/subproviders/src/globals.d.ts +++ b/packages/subproviders/src/globals.d.ts @@ -4,13 +4,3 @@ declare module '*.json' { export default json; /* tslint:enable */ } - -// TODO: Move this to `typescript-typings` once it is more fleshed out -declare module 'json-rpc-error' { - export class InternalError extends Error { - constructor(err: Error | string); - } - export class MethodNotFound extends Error { - constructor(); - } -} diff --git a/packages/typescript-typings/types/detect-node/index.d.ts b/packages/typescript-typings/types/detect-node/index.d.ts new file mode 100644 index 000000000..4c58b8450 --- /dev/null +++ b/packages/typescript-typings/types/detect-node/index.d.ts @@ -0,0 +1,3 @@ +declare module 'detect-node' { + export const isNode: boolean; +} diff --git a/packages/typescript-typings/types/json-rpc-error/index.d.ts b/packages/typescript-typings/types/json-rpc-error/index.d.ts new file mode 100644 index 000000000..dfaf92167 --- /dev/null +++ b/packages/typescript-typings/types/json-rpc-error/index.d.ts @@ -0,0 +1,8 @@ +declare module 'json-rpc-error' { + export class InternalError extends Error { + constructor(err: Error | string); + } + export class MethodNotFound extends Error { + constructor(); + } +} diff --git a/packages/utils/src/globals.d.ts b/packages/utils/src/globals.d.ts index 98a4b56fc..94e63a32d 100644 --- a/packages/utils/src/globals.d.ts +++ b/packages/utils/src/globals.d.ts @@ -4,7 +4,3 @@ declare module '*.json' { export default json; /* tslint:enable */ } - -declare module 'detect-node' { - export const isNode: boolean; -} -- cgit From 179c487da958dedda0f1a8cd93a2ce67f169e53c Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 15:25:48 +0200 Subject: Add missing assertion --- packages/subproviders/src/subproviders/rpc_subprovider.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/subproviders/src/subproviders/rpc_subprovider.ts b/packages/subproviders/src/subproviders/rpc_subprovider.ts index dac821d01..3ad0e5325 100644 --- a/packages/subproviders/src/subproviders/rpc_subprovider.ts +++ b/packages/subproviders/src/subproviders/rpc_subprovider.ts @@ -18,6 +18,7 @@ export class RPCSubprovider extends Subprovider { constructor(rpcUrl: string, requestTimeoutMs: number = 20000) { super(); assert.isString('rpcUrl', rpcUrl); + assert.isNumber('requestTimeoutMs', requestTimeoutMs); this._rpcUrl = rpcUrl; this._requestTimeoutMs = requestTimeoutMs; } -- cgit From 25681754bd3bb963e3348636a4659d6d426ed9e4 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 16:06:15 +0200 Subject: Fix abi-gen tests to not rely on sleep, since it causes intermittent failures --- packages/abi-gen/test/utils_test.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/abi-gen/test/utils_test.ts b/packages/abi-gen/test/utils_test.ts index c6147df38..f3dd38035 100644 --- a/packages/abi-gen/test/utils_test.ts +++ b/packages/abi-gen/test/utils_test.ts @@ -13,8 +13,6 @@ chai.use(dirtyChai); const expect = chai.expect; -const SLEEP_MS = 10; // time to wait before re-timestamping a file - describe('makeOutputFileName()', () => { it('should handle Metacoin usage', () => { expect(utils.makeOutputFileName('Metacoin')).to.equal('metacoin'); @@ -65,19 +63,22 @@ describe('isOutputFileUpToDate()', () => { describe('with an existing output file', () => { let outputFile: string; before(() => { - sleep.msleep(SLEEP_MS); // to ensure different timestamp outputFile = tmp.fileSync( { discardDescriptor: true }, // close file (set timestamp) ).name; + const abiFileModTimeMs = fs.statSync(abiFile).mtimeMs; + const outfileModTimeMs = abiFileModTimeMs + 1; + fs.utimesSync(outputFile, outfileModTimeMs, outfileModTimeMs); }); - it('should return true when output file and is newer than abi file', async () => { + it('should return true when output file is newer than abi file', async () => { expect(utils.isOutputFileUpToDate(abiFile, outputFile)).to.be.true(); }); it('should return false when output file exists but is older than abi file', () => { - sleep.msleep(SLEEP_MS); // to ensure different timestamp - fs.closeSync(fs.openSync(abiFile, 'w')); // touch abi file + const outFileModTimeMs = fs.statSync(outputFile).mtimeMs; + const abiFileModTimeMs = outFileModTimeMs + 1; + fs.utimesSync(abiFile, abiFileModTimeMs, abiFileModTimeMs); expect(utils.isOutputFileUpToDate(abiFile, outputFile)).to.be.false(); }); -- cgit From fcc8cdd36af3a21222d1b97884896ffbd8c2efd1 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 16:40:06 +0200 Subject: Update yarn.lock and artifact --- packages/0x.js/src/artifacts/ZRXToken.json | 20087 +++++++++++++-------------- yarn.lock | 2 +- 2 files changed, 10031 insertions(+), 10058 deletions(-) diff --git a/packages/0x.js/src/artifacts/ZRXToken.json b/packages/0x.js/src/artifacts/ZRXToken.json index 265560c77..0ce91c1c1 100644 --- a/packages/0x.js/src/artifacts/ZRXToken.json +++ b/packages/0x.js/src/artifacts/ZRXToken.json @@ -1,10058 +1,10031 @@ { - "schemaVersion": "2.0.0", - "contractName": "ZRXToken", - "compilerOutput": { - "abi": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ], - "devdoc": { - "methods": { - "transferFrom(address,address,uint256)": { - "details": - "ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.", - "params": { - "_from": "Address to transfer from.", - "_to": "Address to transfer to.", - "_value": "Amount to transfer." - }, - "return": "Success of transfer." - } - } - }, - "evm": { - "assembly": - " /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\n mstore(0x40, 0x60)\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":958:964 10**27 */\n 0x33b2e3c9fd0803ce8000000\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n 0x3\n sstore\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1150:1240 function ZRXToken()... */\n jumpi(tag_1, iszero(callvalue))\n invalid\ntag_1:\ntag_2:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1222:1233 totalSupply */\n sload(0x3)\n sub(exp(0x2, 0xa0), 0x1)\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1208:1218 msg.sender */\n caller\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1219 balances[msg.sender] */\n and\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1207 balances */\n 0x0\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1219 balances[msg.sender] */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1233 balances[msg.sender] = totalSupply */\n sstore\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1150:1240 function ZRXToken()... */\ntag_3:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\ntag_4:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\n mstore(0x40, 0x60)\n jumpi(tag_1, iszero(calldatasize))\n and(div(calldataload(0x0), 0x100000000000000000000000000000000000000000000000000000000), 0xffffffff)\n 0x6fdde03\n dup2\n eq\n tag_2\n jumpi\n dup1\n 0x95ea7b3\n eq\n tag_3\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_4\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_5\n jumpi\n dup1\n 0x313ce567\n eq\n tag_6\n jumpi\n dup1\n 0x70a08231\n eq\n tag_7\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_8\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_9\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_10\n jumpi\n tag_1:\n invalid\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1009:1058 string constant public name = \"0x Protocol Token\" */\n tag_2:\n jumpi(tag_11, iszero(callvalue))\n invalid\n tag_11:\n tag_12\n jump(tag_13)\n tag_12:\n 0x40\n dup1\n mload\n 0x20\n dup1\n dup3\n mstore\n dup4\n mload\n dup2\n dup4\n add\n mstore\n dup4\n mload\n swap2\n swap3\n dup4\n swap3\n swap1\n dup4\n add\n swap2\n dup6\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":18:20 */\n dup3\n iszero\n /* \"--CODEGEN--\":13:16 */\n tag_14\n /* \"--CODEGEN--\":7:12 */\n jumpi\n /* \"--CODEGEN--\":32:37 */\n tag_15:\n /* \"--CODEGEN--\":59:62 */\n dup1\n /* \"--CODEGEN--\":53:58 */\n mload\n /* \"--CODEGEN--\":48:51 */\n dup3\n /* \"--CODEGEN--\":41:47 */\n mstore\n /* \"--CODEGEN--\":93:95 */\n 0x20\n /* \"--CODEGEN--\":88:91 */\n dup4\n /* \"--CODEGEN--\":85:87 */\n gt\n /* \"--CODEGEN--\":78:84 */\n iszero\n /* \"--CODEGEN--\":73:76 */\n tag_14\n /* \"--CODEGEN--\":67:72 */\n jumpi\n /* \"--CODEGEN--\":152:155 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n swap1\n swap3\n add\n swap2\n /* \"--CODEGEN--\":117:119 */\n 0x20\n /* \"--CODEGEN--\":108:111 */\n swap2\n dup3\n add\n swap2\n /* \"--CODEGEN--\":130:133 */\n add\n /* \"--CODEGEN--\":172:177 */\n tag_15\n /* \"--CODEGEN--\":167:171 */\n jump\n /* \"--CODEGEN--\":181:184 */\n tag_14:\n /* \"--CODEGEN--\":3:189 */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_16\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_16:\n pop\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_3:\n jumpi(tag_17, iszero(callvalue))\n invalid\n tag_17:\n tag_18\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n calldataload(0x24)\n jump(tag_19)\n tag_18:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n tag_4:\n jumpi(tag_20, iszero(callvalue))\n invalid\n tag_20:\n tag_21\n jump(tag_22)\n tag_21:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_5:\n jumpi(tag_23, iszero(callvalue))\n invalid\n tag_23:\n tag_18\n 0xffffffffffffffffffffffffffffffffffffffff\n calldataload(0x4)\n dup2\n and\n swap1\n calldataload(0x24)\n and\n calldataload(0x44)\n jump(tag_25)\n tag_24:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n tag_6:\n jumpi(tag_26, iszero(callvalue))\n invalid\n tag_26:\n tag_27\n jump(tag_28)\n tag_27:\n 0x40\n dup1\n mload\n 0xff\n swap1\n swap3\n and\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_7:\n jumpi(tag_29, iszero(callvalue))\n invalid\n tag_29:\n tag_21\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n jump(tag_31)\n tag_30:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1064:1101 string constant public symbol = \"ZRX\" */\n tag_8:\n jumpi(tag_32, iszero(callvalue))\n invalid\n tag_32:\n tag_12\n jump(tag_34)\n tag_33:\n 0x40\n dup1\n mload\n 0x20\n dup1\n dup3\n mstore\n dup4\n mload\n dup2\n dup4\n add\n mstore\n dup4\n mload\n swap2\n swap3\n dup4\n swap3\n swap1\n dup4\n add\n swap2\n dup6\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":18:20 */\n dup3\n iszero\n /* \"--CODEGEN--\":13:16 */\n tag_14\n /* \"--CODEGEN--\":7:12 */\n jumpi\n /* \"--CODEGEN--\":32:37 */\n tag_36:\n /* \"--CODEGEN--\":59:62 */\n dup1\n /* \"--CODEGEN--\":53:58 */\n mload\n /* \"--CODEGEN--\":48:51 */\n dup3\n /* \"--CODEGEN--\":41:47 */\n mstore\n /* \"--CODEGEN--\":93:95 */\n 0x20\n /* \"--CODEGEN--\":88:91 */\n dup4\n /* \"--CODEGEN--\":85:87 */\n gt\n /* \"--CODEGEN--\":78:84 */\n iszero\n /* \"--CODEGEN--\":73:76 */\n tag_14\n /* \"--CODEGEN--\":67:72 */\n jumpi\n /* \"--CODEGEN--\":152:155 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n swap1\n swap3\n add\n swap2\n /* \"--CODEGEN--\":117:119 */\n 0x20\n /* \"--CODEGEN--\":108:111 */\n swap2\n dup3\n add\n swap2\n /* \"--CODEGEN--\":130:133 */\n add\n /* \"--CODEGEN--\":172:177 */\n tag_15\n /* \"--CODEGEN--\":167:171 */\n jump\n /* \"--CODEGEN--\":181:184 */\n tag_35:\n /* \"--CODEGEN--\":3:189 */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_16\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_37:\n pop\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_9:\n jumpi(tag_38, iszero(callvalue))\n invalid\n tag_38:\n tag_18\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n calldataload(0x24)\n jump(tag_40)\n tag_39:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_10:\n jumpi(tag_41, iszero(callvalue))\n invalid\n tag_41:\n tag_21\n 0xffffffffffffffffffffffffffffffffffffffff\n calldataload(0x4)\n dup2\n and\n swap1\n calldataload(0x24)\n and\n jump(tag_43)\n tag_42:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1009:1058 string constant public name = \"0x Protocol Token\" */\n tag_13:\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x11\n dup2\n mstore\n 0x30782050726f746f636f6c20546f6b656e000000000000000000000000000000\n 0x20\n dup3\n add\n mstore\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_19:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1168:1178 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1144:1148 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n dup2\n dup2\n mstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1167 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1189 */\n swap5\n dup8\n and\n dup1\n dup5\n mstore\n swap5\n dup3\n mstore\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1198 */\n dup7\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1208:1246 */\n dup1\n mload\n dup7\n dup2\n mstore\n swap1\n mload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1144:1148 */\n swap3\n swap5\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1189 */\n swap4\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n swap3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1208:1246 */\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n swap3\n swap2\n dup2\n swap1\n sub\n swap1\n swap2\n add\n swap1\n log3\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1263:1267 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_44:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n tag_22:\n sload(0x3)\n dup2\n jump\t// out\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_25:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup5\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1161:1165 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n dup2\n dup2\n mstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1205 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1213:1223 */\n caller\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1224 */\n swap1\n swap6\n and\n dup4\n mstore\n swap4\n dup2\n mstore\n dup4\n dup3\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1253 */\n swap3\n dup3\n mstore\n dup2\n swap1\n mstore\n swap2\n dup3\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1263 */\n dup4\n swap1\n lt\n dup1\n iszero\n swap1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1298 */\n tag_46\n jumpi\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1292:1298 */\n dup3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1279:1288 */\n dup2\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1279:1298 */\n lt\n iszero\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1298 */\n tag_46:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1353 */\n dup1\n iszero\n tag_47\n jumpi\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1353 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup5\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1348 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1353 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1314:1336 */\n dup4\n dup2\n add\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1314:1353 */\n lt\n iszero\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1353 */\n tag_47:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n iszero\n tag_48\n jumpi\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1391 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup6\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1386 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1391 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n dup1\n dup3\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1401 */\n dup1\n sload\n dup8\n add\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1415:1430 */\n swap2\n dup8\n and\n dup2\n mstore\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1415:1440 */\n dup1\n sload\n dup5\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":768:778 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1458:1478 */\n dup2\n lt\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1454:1549 */\n iszero\n tag_49\n jumpi\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1512 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup7\n and\n 0x0\n swap1\n dup2\n mstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1505 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1512 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1513:1523 */\n caller\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1524 */\n swap1\n swap5\n and\n dup4\n mstore\n swap3\n swap1\n mstore\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1534 */\n dup1\n sload\n dup5\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1454:1549 */\n tag_49:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1578:1581 */\n dup4\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1571:1576 */\n dup6\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1583:1589 */\n dup6\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1611:1615 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1604:1615 */\n swap2\n pop\n jump(tag_50)\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n tag_48:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1653:1658 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1646:1658 */\n swap2\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n tag_50:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_45:\n pop\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n tag_28:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":924:926 18 */\n 0x12\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_31:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1058:1074 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1035:1039 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1058:1074 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_51:\n swap2\n swap1\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1064:1101 string constant public symbol = \"ZRX\" */\n tag_34:\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x3\n dup2\n mstore\n 0x5a52580000000000000000000000000000000000000000000000000000000000\n 0x20\n dup3\n add\n mstore\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_40:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":276:286 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":178:182 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n dup2\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:297 */\n dup3\n swap1\n lt\n dup1\n iszero\n swap1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:340 */\n tag_53\n jumpi\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:340 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup4\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:335 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:340 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":301:323 */\n dup3\n dup2\n add\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":301:340 */\n lt\n iszero\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:340 */\n tag_53:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n iszero\n tag_54\n jumpi\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":365:375 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:364 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n dup2\n dup2\n mstore\n 0x20\n dup2\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:386 */\n dup1\n sload\n dup9\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:413 */\n swap4\n dup8\n and\n dup1\n dup4\n mstore\n swap2\n dup5\n swap1\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:423 */\n dup1\n sload\n dup8\n add\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":437:470 */\n dup4\n mload\n dup7\n dup2\n mstore\n swap4\n mload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:413 */\n swap2\n swap4\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":437:470 */\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n swap3\n swap1\n dup2\n swap1\n sub\n swap1\n swap2\n add\n swap1\n log3\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":491:495 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":484:495 */\n jump(tag_44)\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n tag_54:\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":521:526 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":514:526 */\n jump(tag_44)\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n tag_55:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_52:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_43:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup4\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1351:1355 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n swap1\n dup2\n mstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1381 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1399 */\n swap4\n dup6\n and\n dup4\n mstore\n swap3\n swap1\n mstore\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_56:\n swap3\n swap2\n pop\n pop\n jump\t// out\n}\n", - "bytecode": { - "linkReferences": {}, - "object": - "0x60606040526b033b2e3c9fd0803ce8000000600355341561001c57fe5b5b600354600160a060020a0333166000908152602081905260409020555b5b61078d8061004a6000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a723058208999c5329f53064aac58d4b553cb379a45bfca17e024506ff916637cfc36f7b20029", - "opcodes": - "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x3 SSTORE CALLVALUE ISZERO PUSH2 0x1C JUMPI INVALID JUMPDEST JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SSTORE JUMPDEST JUMPDEST PUSH2 0x78D DUP1 PUSH2 0x4A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x96 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x33D JUMPI JUMPDEST INVALID JUMPDEST CALLVALUE ISZERO PUSH2 0xA0 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x14E JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1B0 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1F6 JUMPI INVALID JUMPDEST PUSH2 0x1FE PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x257 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x305 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x345 JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x727 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH32 0x30782050726F746F636F6C20546F6B656E000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE DUP1 DUP4 SHA3 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP5 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 SHA3 SLOAD SWAP3 DUP3 MSTORE DUP2 SWAP1 MSTORE SWAP2 DUP3 SHA3 SLOAD DUP4 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x483 JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4B6 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP4 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x5C6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x558 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x5A52580000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 SHA3 SLOAD DUP3 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x699 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP3 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x427 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x427 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 SHA3 DUP10 SWAP10 0xc5 ORIGIN SWAP16 MSTORE8 MOD 0x4a 0xac PC 0xd4 0xb5 MSTORE8 0xcb CALLDATACOPY SWAP11 GASLIMIT 0xbf 0xca OR 0xe0 0x24 POP PUSH16 0xF916637CFC36F7B20029000000000000 ", - "sourceMap": - "795:447:3:-;;;958:6;932:32;;1150:90;;;;;;;1222:11;;-1:-1:-1;;;;;1208:10:3;1199:20;:8;:20;;;;;;;;;;:34;1150:90;795:447;;;;;;;" - }, - "deployedBytecode": { - "linkReferences": {}, - "object": - "0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a723058208999c5329f53064aac58d4b553cb379a45bfca17e024506ff916637cfc36f7b20029", - "opcodes": - "PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x96 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x33D JUMPI JUMPDEST INVALID JUMPDEST CALLVALUE ISZERO PUSH2 0xA0 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x14E JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1B0 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1F6 JUMPI INVALID JUMPDEST PUSH2 0x1FE PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x257 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x305 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x345 JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x727 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH32 0x30782050726F746F636F6C20546F6B656E000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE DUP1 DUP4 SHA3 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP5 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 SHA3 SLOAD SWAP3 DUP3 MSTORE DUP2 SWAP1 MSTORE SWAP2 DUP3 SHA3 SLOAD DUP4 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x483 JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4B6 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP4 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x5C6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x558 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x5A52580000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 SHA3 SLOAD DUP3 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x699 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP3 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x427 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x427 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 SHA3 DUP10 SWAP10 0xc5 ORIGIN SWAP16 MSTORE8 MOD 0x4a 0xac PC 0xd4 0xb5 MSTORE8 0xcb CALLDATACOPY SWAP11 GASLIMIT 0xbf 0xca OR 0xe0 0x24 POP PUSH16 0xF916637CFC36F7B20029000000000000 ", - "sourceMap": - "795:447:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18:2:-1;;13:3;7:5;32;59:3;53:5;48:3;41:6;93:2;88:3;85:2;78:6;73:3;67:5;152:3;;;;;117:2;108:3;;;;130;172:5;167:4;181:3;3:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1087:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;932:32:3;;;;;;;;;;;;;;;;;;;;;;;;;;1066:609:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:35:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:37:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18:2:-1;;13:3;7:5;32;59:3;53:5;48:3;41:6;93:2;88:3;85:2;78:6;73:3;67:5;152:3;;;;;117:2;108:3;;;;130;172:5;167:4;181:3;3:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;125:410:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:49:3;;;;;;;;;;;;;;;;;;;:::o;1087:187:0:-;1160:19;1168:10;1160:19;;1144:4;1160:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;:38;;;1208;;;;;;;1144:4;;1160:29;:19;1208:38;;;;;;;;;;;-1:-1:-1;1263:4:0;1087:187;;;;;:::o;932:32:3:-;;;;:::o;1066:609:2:-;1198:14;;;;1161:4;1198:14;;;:7;:14;;;;;;;;1213:10;1198:26;;;;;;;;;;;;1238:15;;;;;;;;;;:25;;;;;;:60;;;1292:6;1279:9;:19;;1238:60;:115;;;;-1:-1:-1;1340:13:2;;;:8;:13;;;;;;;;;;;1314:22;;;:39;;1238:115;1234:435;;;1378:13;;;;:8;:13;;;;;;;;;;;:23;;;;;;1415:15;;;;;;:25;;;;;;;768:10;1458:20;;1454:95;;;1498:14;;;;;;;;:7;:14;;;;;;;;1513:10;1498:26;;;;;;;;;:36;;;;;;;1454:95;1578:3;1562:28;;1571:5;1562:28;;;1583:6;1562:28;;;;;;;;;;;;;;;;;;1611:4;1604:11;;;;1234:435;1653:5;1646:12;;1234:435;1066:609;;;;;;;:::o;891:35:3:-;924:2;891:35;:::o;982:99:0:-;1058:16;;;1035:4;1058:16;;;;;;;;;;;982:99;;;;:::o;1064:37:3:-;;;;;;;;;;;;;;;;;;;:::o;125:410:0:-;267:20;276:10;267:20;178:4;267:20;;;;;;;;;;;:30;;;;;;:73;;-1:-1:-1;327:13:0;;;:8;:13;;;;;;;;;;;301:22;;;:39;;267:73;263:266;;;356:20;365:10;356:20;;:8;:20;;;;;;;;;;;:30;;;;;;;400:13;;;;;;;;;;:23;;;;;;437:33;;;;;;;400:13;;437:33;;;;;;;;;;;-1:-1:-1;491:4:0;484:11;;263:266;-1:-1:-1;521:5:0;514:12;;263:266;125:410;;;;;:::o;1280:126::-;1374:15;;;;1351:4;1374:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;1280:126;;;;;:::o" - }, - "gasEstimates": { - "creation": { - "codeDepositCost": "386600", - "executionCost": "40780", - "totalCost": "427380" - }, - "external": { - "allowance(address,address)": "737", - "approve(address,uint256)": "22218", - "balanceOf(address)": "579", - "decimals()": "270", - "name()": "530", - "symbol()": "662", - "totalSupply()": "417", - "transfer(address,uint256)": "43393", - "transferFrom(address,address,uint256)": "64116" - } - }, - "legacyAssembly": { - ".code": [ - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "60" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "40" - }, - { - "begin": 795, - "end": 1242, - "name": "MSTORE" - }, - { - "begin": 958, - "end": 964, - "name": "PUSH", - "value": "33B2E3C9FD0803CE8000000" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH", - "value": "3" - }, - { - "begin": 932, - "end": 964, - "name": "SSTORE" - }, - { - "begin": 1150, - "end": 1240, - "name": "CALLVALUE" - }, - { - "begin": 1150, - "end": 1240, - "name": "ISZERO" - }, - { - "begin": 1150, - "end": 1240, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 1150, - "end": 1240, - "name": "JUMPI" - }, - { - "begin": 1150, - "end": 1240, - "name": "INVALID" - }, - { - "begin": 1150, - "end": 1240, - "name": "tag", - "value": "1" - }, - { - "begin": 1150, - "end": 1240, - "name": "JUMPDEST" - }, - { - "begin": 1150, - "end": 1240, - "name": "tag", - "value": "2" - }, - { - "begin": 1150, - "end": 1240, - "name": "JUMPDEST" - }, - { - "begin": 1222, - "end": 1233, - "name": "PUSH", - "value": "3" - }, - { - "begin": 1222, - "end": 1233, - "name": "SLOAD" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "value": "1" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "value": "A0" - }, - { - "begin": -1, - "end": -1, - "name": "PUSH", - "value": "2" - }, - { - "begin": -1, - "end": -1, - "name": "EXP" - }, - { - "begin": -1, - "end": -1, - "name": "SUB" - }, - { - "begin": 1208, - "end": 1218, - "name": "CALLER" - }, - { - "begin": 1199, - "end": 1219, - "name": "AND" - }, - { - "begin": 1199, - "end": 1207, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1199, - "end": 1219, - "name": "SWAP1" - }, - { - "begin": 1199, - "end": 1219, - "name": "DUP2" - }, - { - "begin": 1199, - "end": 1219, - "name": "MSTORE" - }, - { - "begin": 1199, - "end": 1219, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1199, - "end": 1219, - "name": "DUP2" - }, - { - "begin": 1199, - "end": 1219, - "name": "SWAP1" - }, - { - "begin": 1199, - "end": 1219, - "name": "MSTORE" - }, - { - "begin": 1199, - "end": 1219, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1199, - "end": 1219, - "name": "SWAP1" - }, - { - "begin": 1199, - "end": 1219, - "name": "SHA3" - }, - { - "begin": 1199, - "end": 1233, - "name": "SSTORE" - }, - { - "begin": 1150, - "end": 1240, - "name": "tag", - "value": "3" - }, - { - "begin": 1150, - "end": 1240, - "name": "JUMPDEST" - }, - { - "begin": 795, - "end": 1242, - "name": "tag", - "value": "4" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPDEST" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH #[$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [$]", - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "0" - }, - { - "begin": 795, - "end": 1242, - "name": "CODECOPY" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "0" - }, - { - "begin": 795, - "end": 1242, - "name": "RETURN" - } - ], - ".data": { - "0": { - ".code": [ - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "60" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "40" - }, - { - "begin": 795, - "end": 1242, - "name": "MSTORE" - }, - { - "begin": 795, - "end": 1242, - "name": "CALLDATASIZE" - }, - { - "begin": 795, - "end": 1242, - "name": "ISZERO" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "1" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "FFFFFFFF" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "100000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "0" - }, - { - "begin": 795, - "end": 1242, - "name": "CALLDATALOAD" - }, - { - "begin": 795, - "end": 1242, - "name": "DIV" - }, - { - "begin": 795, - "end": 1242, - "name": "AND" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "6FDDE03" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP2" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "2" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "95EA7B3" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "3" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "18160DDD" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "4" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "23B872DD" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "5" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "313CE567" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "6" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "70A08231" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "7" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "95D89B41" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "8" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "A9059CBB" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "9" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "DUP1" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH", - "value": "DD62ED3E" - }, - { - "begin": 795, - "end": 1242, - "name": "EQ" - }, - { - "begin": 795, - "end": 1242, - "name": "PUSH [tag]", - "value": "10" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPI" - }, - { - "begin": 795, - "end": 1242, - "name": "tag", - "value": "1" - }, - { - "begin": 795, - "end": 1242, - "name": "JUMPDEST" - }, - { - "begin": 795, - "end": 1242, - "name": "INVALID" - }, - { - "begin": 1009, - "end": 1058, - "name": "tag", - "value": "2" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMPDEST" - }, - { - "begin": 1009, - "end": 1058, - "name": "CALLVALUE" - }, - { - "begin": 1009, - "end": 1058, - "name": "ISZERO" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH [tag]", - "value": "11" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMPI" - }, - { - "begin": 1009, - "end": 1058, - "name": "INVALID" - }, - { - "begin": 1009, - "end": 1058, - "name": "tag", - "value": "11" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMPDEST" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH [tag]", - "value": "13" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMP" - }, - { - "begin": 1009, - "end": 1058, - "name": "tag", - "value": "12" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMPDEST" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "MLOAD" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP3" - }, - { - "begin": 1009, - "end": 1058, - "name": "MSTORE" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "MLOAD" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "ADD" - }, - { - "begin": 1009, - "end": 1058, - "name": "MSTORE" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "MLOAD" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP3" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP3" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "ADD" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP6" - }, - { - "begin": 1009, - "end": 1058, - "name": "ADD" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP4" - }, - { - "begin": 18, - "end": 20, - "name": "DUP3" - }, - { - "begin": 18, - "end": 20, - "name": "ISZERO" - }, - { - "begin": 13, - "end": 16, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 7, - "end": 12, - "name": "JUMPI" - }, - { - "begin": 32, - "end": 37, - "name": "tag", - "value": "15" - }, - { - "begin": 32, - "end": 37, - "name": "JUMPDEST" - }, - { - "begin": 59, - "end": 62, - "name": "DUP1" - }, - { - "begin": 53, - "end": 58, - "name": "MLOAD" - }, - { - "begin": 48, - "end": 51, - "name": "DUP3" - }, - { - "begin": 41, - "end": 47, - "name": "MSTORE" - }, - { - "begin": 93, - "end": 95, - "name": "PUSH", - "value": "20" - }, - { - "begin": 88, - "end": 91, - "name": "DUP4" - }, - { - "begin": 85, - "end": 87, - "name": "GT" - }, - { - "begin": 78, - "end": 84, - "name": "ISZERO" - }, - { - "begin": 73, - "end": 76, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 67, - "end": 72, - "name": "JUMPI" - }, - { - "begin": 152, - "end": 155, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP1" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP3" - }, - { - "begin": 152, - "end": 155, - "name": "ADD" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP2" - }, - { - "begin": 117, - "end": 119, - "name": "PUSH", - "value": "20" - }, - { - "begin": 108, - "end": 111, - "name": "SWAP2" - }, - { - "begin": 108, - "end": 111, - "name": "DUP3" - }, - { - "begin": 108, - "end": 111, - "name": "ADD" - }, - { - "begin": 108, - "end": 111, - "name": "SWAP2" - }, - { - "begin": 130, - "end": 133, - "name": "ADD" - }, - { - "begin": 172, - "end": 177, - "name": "PUSH [tag]", - "value": "15" - }, - { - "begin": 167, - "end": 171, - "name": "JUMP" - }, - { - "begin": 181, - "end": 184, - "name": "tag", - "value": "14" - }, - { - "begin": 181, - "end": 184, - "name": "JUMPDEST" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP2" - }, - { - "begin": 3, - "end": 189, - "name": "ADD" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 3, - "end": 189, - "name": "AND" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "ISZERO" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 3, - "end": 189, - "name": "JUMPI" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP3" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "MLOAD" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP4" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "100" - }, - { - "begin": 3, - "end": 189, - "name": "EXP" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "NOT" - }, - { - "begin": 3, - "end": 189, - "name": "AND" - }, - { - "begin": 3, - "end": 189, - "name": "DUP2" - }, - { - "begin": 3, - "end": 189, - "name": "MSTORE" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3, - "end": 189, - "name": "ADD" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP2" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "tag", - "value": "16" - }, - { - "begin": 3, - "end": 189, - "name": "JUMPDEST" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP3" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "40" - }, - { - "begin": 3, - "end": 189, - "name": "MLOAD" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP2" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "RETURN" - }, - { - "begin": 1087, - "end": 1274, - "name": "tag", - "value": "3" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPDEST" - }, - { - "begin": 1087, - "end": 1274, - "name": "CALLVALUE" - }, - { - "begin": 1087, - "end": 1274, - "name": "ISZERO" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH [tag]", - "value": "17" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPI" - }, - { - "begin": 1087, - "end": 1274, - "name": "INVALID" - }, - { - "begin": 1087, - "end": 1274, - "name": "tag", - "value": "17" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPDEST" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1087, - "end": 1274, - "name": "CALLDATALOAD" - }, - { - "begin": 1087, - "end": 1274, - "name": "AND" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH", - "value": "24" - }, - { - "begin": 1087, - "end": 1274, - "name": "CALLDATALOAD" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH [tag]", - "value": "19" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMP" - }, - { - "begin": 1087, - "end": 1274, - "name": "tag", - "value": "18" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPDEST" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1087, - "end": 1274, - "name": "DUP1" - }, - { - "begin": 1087, - "end": 1274, - "name": "MLOAD" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP2" - }, - { - "begin": 1087, - "end": 1274, - "name": "ISZERO" - }, - { - "begin": 1087, - "end": 1274, - "name": "ISZERO" - }, - { - "begin": 1087, - "end": 1274, - "name": "DUP3" - }, - { - "begin": 1087, - "end": 1274, - "name": "MSTORE" - }, - { - "begin": 1087, - "end": 1274, - "name": "MLOAD" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP1" - }, - { - "begin": 1087, - "end": 1274, - "name": "DUP2" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP1" - }, - { - "begin": 1087, - "end": 1274, - "name": "SUB" - }, - { - "begin": 1087, - "end": 1274, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1087, - "end": 1274, - "name": "ADD" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP1" - }, - { - "begin": 1087, - "end": 1274, - "name": "RETURN" - }, - { - "begin": 932, - "end": 964, - "name": "tag", - "value": "4" - }, - { - "begin": 932, - "end": 964, - "name": "JUMPDEST" - }, - { - "begin": 932, - "end": 964, - "name": "CALLVALUE" - }, - { - "begin": 932, - "end": 964, - "name": "ISZERO" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH [tag]", - "value": "20" - }, - { - "begin": 932, - "end": 964, - "name": "JUMPI" - }, - { - "begin": 932, - "end": 964, - "name": "INVALID" - }, - { - "begin": 932, - "end": 964, - "name": "tag", - "value": "20" - }, - { - "begin": 932, - "end": 964, - "name": "JUMPDEST" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH [tag]", - "value": "22" - }, - { - "begin": 932, - "end": 964, - "name": "JUMP" - }, - { - "begin": 932, - "end": 964, - "name": "tag", - "value": "21" - }, - { - "begin": 932, - "end": 964, - "name": "JUMPDEST" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH", - "value": "40" - }, - { - "begin": 932, - "end": 964, - "name": "DUP1" - }, - { - "begin": 932, - "end": 964, - "name": "MLOAD" - }, - { - "begin": 932, - "end": 964, - "name": "SWAP2" - }, - { - "begin": 932, - "end": 964, - "name": "DUP3" - }, - { - "begin": 932, - "end": 964, - "name": "MSTORE" - }, - { - "begin": 932, - "end": 964, - "name": "MLOAD" - }, - { - "begin": 932, - "end": 964, - "name": "SWAP1" - }, - { - "begin": 932, - "end": 964, - "name": "DUP2" - }, - { - "begin": 932, - "end": 964, - "name": "SWAP1" - }, - { - "begin": 932, - "end": 964, - "name": "SUB" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH", - "value": "20" - }, - { - "begin": 932, - "end": 964, - "name": "ADD" - }, - { - "begin": 932, - "end": 964, - "name": "SWAP1" - }, - { - "begin": 932, - "end": 964, - "name": "RETURN" - }, - { - "begin": 1066, - "end": 1675, - "name": "tag", - "value": "5" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPDEST" - }, - { - "begin": 1066, - "end": 1675, - "name": "CALLVALUE" - }, - { - "begin": 1066, - "end": 1675, - "name": "ISZERO" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH [tag]", - "value": "23" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPI" - }, - { - "begin": 1066, - "end": 1675, - "name": "INVALID" - }, - { - "begin": 1066, - "end": 1675, - "name": "tag", - "value": "23" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPDEST" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1066, - "end": 1675, - "name": "CALLDATALOAD" - }, - { - "begin": 1066, - "end": 1675, - "name": "DUP2" - }, - { - "begin": 1066, - "end": 1675, - "name": "AND" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP1" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "24" - }, - { - "begin": 1066, - "end": 1675, - "name": "CALLDATALOAD" - }, - { - "begin": 1066, - "end": 1675, - "name": "AND" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "44" - }, - { - "begin": 1066, - "end": 1675, - "name": "CALLDATALOAD" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH [tag]", - "value": "25" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMP" - }, - { - "begin": 1066, - "end": 1675, - "name": "tag", - "value": "24" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPDEST" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1066, - "end": 1675, - "name": "DUP1" - }, - { - "begin": 1066, - "end": 1675, - "name": "MLOAD" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP2" - }, - { - "begin": 1066, - "end": 1675, - "name": "ISZERO" - }, - { - "begin": 1066, - "end": 1675, - "name": "ISZERO" - }, - { - "begin": 1066, - "end": 1675, - "name": "DUP3" - }, - { - "begin": 1066, - "end": 1675, - "name": "MSTORE" - }, - { - "begin": 1066, - "end": 1675, - "name": "MLOAD" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP1" - }, - { - "begin": 1066, - "end": 1675, - "name": "DUP2" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP1" - }, - { - "begin": 1066, - "end": 1675, - "name": "SUB" - }, - { - "begin": 1066, - "end": 1675, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1066, - "end": 1675, - "name": "ADD" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP1" - }, - { - "begin": 1066, - "end": 1675, - "name": "RETURN" - }, - { - "begin": 891, - "end": 926, - "name": "tag", - "value": "6" - }, - { - "begin": 891, - "end": 926, - "name": "JUMPDEST" - }, - { - "begin": 891, - "end": 926, - "name": "CALLVALUE" - }, - { - "begin": 891, - "end": 926, - "name": "ISZERO" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH [tag]", - "value": "26" - }, - { - "begin": 891, - "end": 926, - "name": "JUMPI" - }, - { - "begin": 891, - "end": 926, - "name": "INVALID" - }, - { - "begin": 891, - "end": 926, - "name": "tag", - "value": "26" - }, - { - "begin": 891, - "end": 926, - "name": "JUMPDEST" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH [tag]", - "value": "27" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH [tag]", - "value": "28" - }, - { - "begin": 891, - "end": 926, - "name": "JUMP" - }, - { - "begin": 891, - "end": 926, - "name": "tag", - "value": "27" - }, - { - "begin": 891, - "end": 926, - "name": "JUMPDEST" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH", - "value": "40" - }, - { - "begin": 891, - "end": 926, - "name": "DUP1" - }, - { - "begin": 891, - "end": 926, - "name": "MLOAD" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH", - "value": "FF" - }, - { - "begin": 891, - "end": 926, - "name": "SWAP1" - }, - { - "begin": 891, - "end": 926, - "name": "SWAP3" - }, - { - "begin": 891, - "end": 926, - "name": "AND" - }, - { - "begin": 891, - "end": 926, - "name": "DUP3" - }, - { - "begin": 891, - "end": 926, - "name": "MSTORE" - }, - { - "begin": 891, - "end": 926, - "name": "MLOAD" - }, - { - "begin": 891, - "end": 926, - "name": "SWAP1" - }, - { - "begin": 891, - "end": 926, - "name": "DUP2" - }, - { - "begin": 891, - "end": 926, - "name": "SWAP1" - }, - { - "begin": 891, - "end": 926, - "name": "SUB" - }, - { - "begin": 891, - "end": 926, - "name": "PUSH", - "value": "20" - }, - { - "begin": 891, - "end": 926, - "name": "ADD" - }, - { - "begin": 891, - "end": 926, - "name": "SWAP1" - }, - { - "begin": 891, - "end": 926, - "name": "RETURN" - }, - { - "begin": 982, - "end": 1081, - "name": "tag", - "value": "7" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPDEST" - }, - { - "begin": 982, - "end": 1081, - "name": "CALLVALUE" - }, - { - "begin": 982, - "end": 1081, - "name": "ISZERO" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH [tag]", - "value": "29" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPI" - }, - { - "begin": 982, - "end": 1081, - "name": "INVALID" - }, - { - "begin": 982, - "end": 1081, - "name": "tag", - "value": "29" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPDEST" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH", - "value": "4" - }, - { - "begin": 982, - "end": 1081, - "name": "CALLDATALOAD" - }, - { - "begin": 982, - "end": 1081, - "name": "AND" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH [tag]", - "value": "31" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMP" - }, - { - "begin": 982, - "end": 1081, - "name": "tag", - "value": "30" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPDEST" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH", - "value": "40" - }, - { - "begin": 982, - "end": 1081, - "name": "DUP1" - }, - { - "begin": 982, - "end": 1081, - "name": "MLOAD" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP2" - }, - { - "begin": 982, - "end": 1081, - "name": "DUP3" - }, - { - "begin": 982, - "end": 1081, - "name": "MSTORE" - }, - { - "begin": 982, - "end": 1081, - "name": "MLOAD" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP1" - }, - { - "begin": 982, - "end": 1081, - "name": "DUP2" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP1" - }, - { - "begin": 982, - "end": 1081, - "name": "SUB" - }, - { - "begin": 982, - "end": 1081, - "name": "PUSH", - "value": "20" - }, - { - "begin": 982, - "end": 1081, - "name": "ADD" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP1" - }, - { - "begin": 982, - "end": 1081, - "name": "RETURN" - }, - { - "begin": 1064, - "end": 1101, - "name": "tag", - "value": "8" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMPDEST" - }, - { - "begin": 1064, - "end": 1101, - "name": "CALLVALUE" - }, - { - "begin": 1064, - "end": 1101, - "name": "ISZERO" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH [tag]", - "value": "32" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMPI" - }, - { - "begin": 1064, - "end": 1101, - "name": "INVALID" - }, - { - "begin": 1064, - "end": 1101, - "name": "tag", - "value": "32" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMPDEST" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH [tag]", - "value": "12" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH [tag]", - "value": "34" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMP" - }, - { - "begin": 1064, - "end": 1101, - "name": "tag", - "value": "33" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMPDEST" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "MLOAD" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP3" - }, - { - "begin": 1064, - "end": 1101, - "name": "MSTORE" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "MLOAD" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "ADD" - }, - { - "begin": 1064, - "end": 1101, - "name": "MSTORE" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "MLOAD" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP3" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP3" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "ADD" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP6" - }, - { - "begin": 1064, - "end": 1101, - "name": "ADD" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP4" - }, - { - "begin": 18, - "end": 20, - "name": "DUP3" - }, - { - "begin": 18, - "end": 20, - "name": "ISZERO" - }, - { - "begin": 13, - "end": 16, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 7, - "end": 12, - "name": "JUMPI" - }, - { - "begin": 32, - "end": 37, - "name": "tag", - "value": "36" - }, - { - "begin": 32, - "end": 37, - "name": "JUMPDEST" - }, - { - "begin": 59, - "end": 62, - "name": "DUP1" - }, - { - "begin": 53, - "end": 58, - "name": "MLOAD" - }, - { - "begin": 48, - "end": 51, - "name": "DUP3" - }, - { - "begin": 41, - "end": 47, - "name": "MSTORE" - }, - { - "begin": 93, - "end": 95, - "name": "PUSH", - "value": "20" - }, - { - "begin": 88, - "end": 91, - "name": "DUP4" - }, - { - "begin": 85, - "end": 87, - "name": "GT" - }, - { - "begin": 78, - "end": 84, - "name": "ISZERO" - }, - { - "begin": 73, - "end": 76, - "name": "PUSH [tag]", - "value": "14" - }, - { - "begin": 67, - "end": 72, - "name": "JUMPI" - }, - { - "begin": 152, - "end": 155, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP1" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP3" - }, - { - "begin": 152, - "end": 155, - "name": "ADD" - }, - { - "begin": 152, - "end": 155, - "name": "SWAP2" - }, - { - "begin": 117, - "end": 119, - "name": "PUSH", - "value": "20" - }, - { - "begin": 108, - "end": 111, - "name": "SWAP2" - }, - { - "begin": 108, - "end": 111, - "name": "DUP3" - }, - { - "begin": 108, - "end": 111, - "name": "ADD" - }, - { - "begin": 108, - "end": 111, - "name": "SWAP2" - }, - { - "begin": 130, - "end": 133, - "name": "ADD" - }, - { - "begin": 172, - "end": 177, - "name": "PUSH [tag]", - "value": "15" - }, - { - "begin": 167, - "end": 171, - "name": "JUMP" - }, - { - "begin": 181, - "end": 184, - "name": "tag", - "value": "35" - }, - { - "begin": 181, - "end": 184, - "name": "JUMPDEST" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP2" - }, - { - "begin": 3, - "end": 189, - "name": "ADD" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "1F" - }, - { - "begin": 3, - "end": 189, - "name": "AND" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "ISZERO" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH [tag]", - "value": "16" - }, - { - "begin": 3, - "end": 189, - "name": "JUMPI" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP3" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "MLOAD" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "1" - }, - { - "begin": 3, - "end": 189, - "name": "DUP4" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "100" - }, - { - "begin": 3, - "end": 189, - "name": "EXP" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "NOT" - }, - { - "begin": 3, - "end": 189, - "name": "AND" - }, - { - "begin": 3, - "end": 189, - "name": "DUP2" - }, - { - "begin": 3, - "end": 189, - "name": "MSTORE" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "20" - }, - { - "begin": 3, - "end": 189, - "name": "ADD" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP2" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "tag", - "value": "37" - }, - { - "begin": 3, - "end": 189, - "name": "JUMPDEST" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP3" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "POP" - }, - { - "begin": 3, - "end": 189, - "name": "PUSH", - "value": "40" - }, - { - "begin": 3, - "end": 189, - "name": "MLOAD" - }, - { - "begin": 3, - "end": 189, - "name": "DUP1" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP2" - }, - { - "begin": 3, - "end": 189, - "name": "SUB" - }, - { - "begin": 3, - "end": 189, - "name": "SWAP1" - }, - { - "begin": 3, - "end": 189, - "name": "RETURN" - }, - { - "begin": 125, - "end": 535, - "name": "tag", - "value": "9" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPDEST" - }, - { - "begin": 125, - "end": 535, - "name": "CALLVALUE" - }, - { - "begin": 125, - "end": 535, - "name": "ISZERO" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH [tag]", - "value": "38" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPI" - }, - { - "begin": 125, - "end": 535, - "name": "INVALID" - }, - { - "begin": 125, - "end": 535, - "name": "tag", - "value": "38" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPDEST" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH [tag]", - "value": "18" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH", - "value": "4" - }, - { - "begin": 125, - "end": 535, - "name": "CALLDATALOAD" - }, - { - "begin": 125, - "end": 535, - "name": "AND" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH", - "value": "24" - }, - { - "begin": 125, - "end": 535, - "name": "CALLDATALOAD" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH [tag]", - "value": "40" - }, - { - "begin": 125, - "end": 535, - "name": "JUMP" - }, - { - "begin": 125, - "end": 535, - "name": "tag", - "value": "39" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPDEST" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH", - "value": "40" - }, - { - "begin": 125, - "end": 535, - "name": "DUP1" - }, - { - "begin": 125, - "end": 535, - "name": "MLOAD" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP2" - }, - { - "begin": 125, - "end": 535, - "name": "ISZERO" - }, - { - "begin": 125, - "end": 535, - "name": "ISZERO" - }, - { - "begin": 125, - "end": 535, - "name": "DUP3" - }, - { - "begin": 125, - "end": 535, - "name": "MSTORE" - }, - { - "begin": 125, - "end": 535, - "name": "MLOAD" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP1" - }, - { - "begin": 125, - "end": 535, - "name": "DUP2" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP1" - }, - { - "begin": 125, - "end": 535, - "name": "SUB" - }, - { - "begin": 125, - "end": 535, - "name": "PUSH", - "value": "20" - }, - { - "begin": 125, - "end": 535, - "name": "ADD" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP1" - }, - { - "begin": 125, - "end": 535, - "name": "RETURN" - }, - { - "begin": 1280, - "end": 1406, - "name": "tag", - "value": "10" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPDEST" - }, - { - "begin": 1280, - "end": 1406, - "name": "CALLVALUE" - }, - { - "begin": 1280, - "end": 1406, - "name": "ISZERO" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH [tag]", - "value": "41" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPI" - }, - { - "begin": 1280, - "end": 1406, - "name": "INVALID" - }, - { - "begin": 1280, - "end": 1406, - "name": "tag", - "value": "41" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPDEST" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH [tag]", - "value": "21" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH", - "value": "4" - }, - { - "begin": 1280, - "end": 1406, - "name": "CALLDATALOAD" - }, - { - "begin": 1280, - "end": 1406, - "name": "DUP2" - }, - { - "begin": 1280, - "end": 1406, - "name": "AND" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP1" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH", - "value": "24" - }, - { - "begin": 1280, - "end": 1406, - "name": "CALLDATALOAD" - }, - { - "begin": 1280, - "end": 1406, - "name": "AND" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH [tag]", - "value": "43" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMP" - }, - { - "begin": 1280, - "end": 1406, - "name": "tag", - "value": "42" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPDEST" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1280, - "end": 1406, - "name": "DUP1" - }, - { - "begin": 1280, - "end": 1406, - "name": "MLOAD" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP2" - }, - { - "begin": 1280, - "end": 1406, - "name": "DUP3" - }, - { - "begin": 1280, - "end": 1406, - "name": "MSTORE" - }, - { - "begin": 1280, - "end": 1406, - "name": "MLOAD" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP1" - }, - { - "begin": 1280, - "end": 1406, - "name": "DUP2" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP1" - }, - { - "begin": 1280, - "end": 1406, - "name": "SUB" - }, - { - "begin": 1280, - "end": 1406, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1280, - "end": 1406, - "name": "ADD" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP1" - }, - { - "begin": 1280, - "end": 1406, - "name": "RETURN" - }, - { - "begin": 1009, - "end": 1058, - "name": "tag", - "value": "13" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMPDEST" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "MLOAD" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP3" - }, - { - "begin": 1009, - "end": 1058, - "name": "ADD" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP1" - }, - { - "begin": 1009, - "end": 1058, - "name": "SWAP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "MSTORE" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "11" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "MSTORE" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "30782050726F746F636F6C20546F6B656E000000000000000000000000000000" - }, - { - "begin": 1009, - "end": 1058, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP3" - }, - { - "begin": 1009, - "end": 1058, - "name": "ADD" - }, - { - "begin": 1009, - "end": 1058, - "name": "MSTORE" - }, - { - "begin": 1009, - "end": 1058, - "name": "DUP2" - }, - { - "begin": 1009, - "end": 1058, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1087, - "end": 1274, - "name": "tag", - "value": "19" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPDEST" - }, - { - "begin": 1160, - "end": 1179, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1168, - "end": 1178, - "name": "CALLER" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP2" - }, - { - "begin": 1160, - "end": 1179, - "name": "AND" - }, - { - "begin": 1144, - "end": 1148, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP2" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP2" - }, - { - "begin": 1160, - "end": 1179, - "name": "MSTORE" - }, - { - "begin": 1160, - "end": 1167, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1160, - "end": 1179, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1160, - "end": 1179, - "name": "SWAP1" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP2" - }, - { - "begin": 1160, - "end": 1179, - "name": "MSTORE" - }, - { - "begin": 1160, - "end": 1179, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP1" - }, - { - "begin": 1160, - "end": 1179, - "name": "DUP4" - }, - { - "begin": 1160, - "end": 1179, - "name": "SHA3" - }, - { - "begin": 1160, - "end": 1189, - "name": "SWAP5" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP8" - }, - { - "begin": 1160, - "end": 1189, - "name": "AND" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP1" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP5" - }, - { - "begin": 1160, - "end": 1189, - "name": "MSTORE" - }, - { - "begin": 1160, - "end": 1189, - "name": "SWAP5" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP3" - }, - { - "begin": 1160, - "end": 1189, - "name": "MSTORE" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP1" - }, - { - "begin": 1160, - "end": 1189, - "name": "DUP4" - }, - { - "begin": 1160, - "end": 1189, - "name": "SHA3" - }, - { - "begin": 1160, - "end": 1198, - "name": "DUP7" - }, - { - "begin": 1160, - "end": 1198, - "name": "SWAP1" - }, - { - "begin": 1160, - "end": 1198, - "name": "SSTORE" - }, - { - "begin": 1208, - "end": 1246, - "name": "DUP1" - }, - { - "begin": 1208, - "end": 1246, - "name": "MLOAD" - }, - { - "begin": 1208, - "end": 1246, - "name": "DUP7" - }, - { - "begin": 1208, - "end": 1246, - "name": "DUP2" - }, - { - "begin": 1208, - "end": 1246, - "name": "MSTORE" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP1" - }, - { - "begin": 1208, - "end": 1246, - "name": "MLOAD" - }, - { - "begin": 1144, - "end": 1148, - "name": "SWAP3" - }, - { - "begin": 1144, - "end": 1148, - "name": "SWAP5" - }, - { - "begin": 1160, - "end": 1189, - "name": "SWAP4" - }, - { - "begin": 1160, - "end": 1179, - "name": "SWAP3" - }, - { - "begin": 1208, - "end": 1246, - "name": "PUSH", - "value": "8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP3" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP2" - }, - { - "begin": 1208, - "end": 1246, - "name": "DUP2" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP1" - }, - { - "begin": 1208, - "end": 1246, - "name": "SUB" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP1" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP2" - }, - { - "begin": 1208, - "end": 1246, - "name": "ADD" - }, - { - "begin": 1208, - "end": 1246, - "name": "SWAP1" - }, - { - "begin": 1208, - "end": 1246, - "name": "LOG3" - }, - { - "begin": -1, - "end": -1, - "name": "POP" - }, - { - "begin": 1263, - "end": 1267, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1087, - "end": 1274, - "name": "tag", - "value": "44" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMPDEST" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP3" - }, - { - "begin": 1087, - "end": 1274, - "name": "SWAP2" - }, - { - "begin": 1087, - "end": 1274, - "name": "POP" - }, - { - "begin": 1087, - "end": 1274, - "name": "POP" - }, - { - "begin": 1087, - "end": 1274, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 932, - "end": 964, - "name": "tag", - "value": "22" - }, - { - "begin": 932, - "end": 964, - "name": "JUMPDEST" - }, - { - "begin": 932, - "end": 964, - "name": "PUSH", - "value": "3" - }, - { - "begin": 932, - "end": 964, - "name": "SLOAD" - }, - { - "begin": 932, - "end": 964, - "name": "DUP2" - }, - { - "begin": 932, - "end": 964, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1066, - "end": 1675, - "name": "tag", - "value": "25" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPDEST" - }, - { - "begin": 1198, - "end": 1212, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP1" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP5" - }, - { - "begin": 1198, - "end": 1212, - "name": "AND" - }, - { - "begin": 1161, - "end": 1165, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP2" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP2" - }, - { - "begin": 1198, - "end": 1212, - "name": "MSTORE" - }, - { - "begin": 1198, - "end": 1205, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1198, - "end": 1212, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1198, - "end": 1212, - "name": "SWAP1" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP2" - }, - { - "begin": 1198, - "end": 1212, - "name": "MSTORE" - }, - { - "begin": 1198, - "end": 1212, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP1" - }, - { - "begin": 1198, - "end": 1212, - "name": "DUP4" - }, - { - "begin": 1198, - "end": 1212, - "name": "SHA3" - }, - { - "begin": 1213, - "end": 1223, - "name": "CALLER" - }, - { - "begin": 1198, - "end": 1224, - "name": "SWAP1" - }, - { - "begin": 1198, - "end": 1224, - "name": "SWAP6" - }, - { - "begin": 1198, - "end": 1224, - "name": "AND" - }, - { - "begin": 1198, - "end": 1224, - "name": "DUP4" - }, - { - "begin": 1198, - "end": 1224, - "name": "MSTORE" - }, - { - "begin": 1198, - "end": 1224, - "name": "SWAP4" - }, - { - "begin": 1198, - "end": 1224, - "name": "DUP2" - }, - { - "begin": 1198, - "end": 1224, - "name": "MSTORE" - }, - { - "begin": 1198, - "end": 1224, - "name": "DUP4" - }, - { - "begin": 1198, - "end": 1224, - "name": "DUP3" - }, - { - "begin": 1198, - "end": 1224, - "name": "SHA3" - }, - { - "begin": 1198, - "end": 1224, - "name": "SLOAD" - }, - { - "begin": 1238, - "end": 1253, - "name": "SWAP3" - }, - { - "begin": 1238, - "end": 1253, - "name": "DUP3" - }, - { - "begin": 1238, - "end": 1253, - "name": "MSTORE" - }, - { - "begin": 1238, - "end": 1253, - "name": "DUP2" - }, - { - "begin": 1238, - "end": 1253, - "name": "SWAP1" - }, - { - "begin": 1238, - "end": 1253, - "name": "MSTORE" - }, - { - "begin": 1238, - "end": 1253, - "name": "SWAP2" - }, - { - "begin": 1238, - "end": 1253, - "name": "DUP3" - }, - { - "begin": 1238, - "end": 1253, - "name": "SHA3" - }, - { - "begin": 1238, - "end": 1253, - "name": "SLOAD" - }, - { - "begin": 1238, - "end": 1263, - "name": "DUP4" - }, - { - "begin": 1238, - "end": 1263, - "name": "SWAP1" - }, - { - "begin": 1238, - "end": 1263, - "name": "LT" - }, - { - "begin": 1238, - "end": 1263, - "name": "DUP1" - }, - { - "begin": 1238, - "end": 1263, - "name": "ISZERO" - }, - { - "begin": 1238, - "end": 1263, - "name": "SWAP1" - }, - { - "begin": 1238, - "end": 1298, - "name": "PUSH [tag]", - "value": "46" - }, - { - "begin": 1238, - "end": 1298, - "name": "JUMPI" - }, - { - "begin": 1238, - "end": 1298, - "name": "POP" - }, - { - "begin": 1292, - "end": 1298, - "name": "DUP3" - }, - { - "begin": 1279, - "end": 1288, - "name": "DUP2" - }, - { - "begin": 1279, - "end": 1298, - "name": "LT" - }, - { - "begin": 1279, - "end": 1298, - "name": "ISZERO" - }, - { - "begin": 1238, - "end": 1298, - "name": "tag", - "value": "46" - }, - { - "begin": 1238, - "end": 1298, - "name": "JUMPDEST" - }, - { - "begin": 1238, - "end": 1353, - "name": "DUP1" - }, - { - "begin": 1238, - "end": 1353, - "name": "ISZERO" - }, - { - "begin": 1238, - "end": 1353, - "name": "PUSH [tag]", - "value": "47" - }, - { - "begin": 1238, - "end": 1353, - "name": "JUMPI" - }, - { - "begin": -1, - "end": -1, - "name": "POP" - }, - { - "begin": 1340, - "end": 1353, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1340, - "end": 1353, - "name": "DUP5" - }, - { - "begin": 1340, - "end": 1353, - "name": "AND" - }, - { - "begin": 1340, - "end": 1348, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1340, - "end": 1353, - "name": "SWAP1" - }, - { - "begin": 1340, - "end": 1353, - "name": "DUP2" - }, - { - "begin": 1340, - "end": 1353, - "name": "MSTORE" - }, - { - "begin": 1340, - "end": 1353, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1340, - "end": 1353, - "name": "DUP2" - }, - { - "begin": 1340, - "end": 1353, - "name": "SWAP1" - }, - { - "begin": 1340, - "end": 1353, - "name": "MSTORE" - }, - { - "begin": 1340, - "end": 1353, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1340, - "end": 1353, - "name": "SWAP1" - }, - { - "begin": 1340, - "end": 1353, - "name": "SHA3" - }, - { - "begin": 1340, - "end": 1353, - "name": "SLOAD" - }, - { - "begin": 1314, - "end": 1336, - "name": "DUP4" - }, - { - "begin": 1314, - "end": 1336, - "name": "DUP2" - }, - { - "begin": 1314, - "end": 1336, - "name": "ADD" - }, - { - "begin": 1314, - "end": 1353, - "name": "LT" - }, - { - "begin": 1314, - "end": 1353, - "name": "ISZERO" - }, - { - "begin": 1238, - "end": 1353, - "name": "tag", - "value": "47" - }, - { - "begin": 1238, - "end": 1353, - "name": "JUMPDEST" - }, - { - "begin": 1234, - "end": 1669, - "name": "ISZERO" - }, - { - "begin": 1234, - "end": 1669, - "name": "PUSH [tag]", - "value": "48" - }, - { - "begin": 1234, - "end": 1669, - "name": "JUMPI" - }, - { - "begin": 1378, - "end": 1391, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP1" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP6" - }, - { - "begin": 1378, - "end": 1391, - "name": "AND" - }, - { - "begin": 1378, - "end": 1386, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1378, - "end": 1391, - "name": "SWAP1" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP2" - }, - { - "begin": 1378, - "end": 1391, - "name": "MSTORE" - }, - { - "begin": 1378, - "end": 1391, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP2" - }, - { - "begin": 1378, - "end": 1391, - "name": "SWAP1" - }, - { - "begin": 1378, - "end": 1391, - "name": "MSTORE" - }, - { - "begin": 1378, - "end": 1391, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP1" - }, - { - "begin": 1378, - "end": 1391, - "name": "DUP3" - }, - { - "begin": 1378, - "end": 1391, - "name": "SHA3" - }, - { - "begin": 1378, - "end": 1401, - "name": "DUP1" - }, - { - "begin": 1378, - "end": 1401, - "name": "SLOAD" - }, - { - "begin": 1378, - "end": 1401, - "name": "DUP8" - }, - { - "begin": 1378, - "end": 1401, - "name": "ADD" - }, - { - "begin": 1378, - "end": 1401, - "name": "SWAP1" - }, - { - "begin": 1378, - "end": 1401, - "name": "SSTORE" - }, - { - "begin": 1415, - "end": 1430, - "name": "SWAP2" - }, - { - "begin": 1415, - "end": 1430, - "name": "DUP8" - }, - { - "begin": 1415, - "end": 1430, - "name": "AND" - }, - { - "begin": 1415, - "end": 1430, - "name": "DUP2" - }, - { - "begin": 1415, - "end": 1430, - "name": "MSTORE" - }, - { - "begin": 1415, - "end": 1430, - "name": "SHA3" - }, - { - "begin": 1415, - "end": 1440, - "name": "DUP1" - }, - { - "begin": 1415, - "end": 1440, - "name": "SLOAD" - }, - { - "begin": 1415, - "end": 1440, - "name": "DUP5" - }, - { - "begin": 1415, - "end": 1440, - "name": "SWAP1" - }, - { - "begin": 1415, - "end": 1440, - "name": "SUB" - }, - { - "begin": 1415, - "end": 1440, - "name": "SWAP1" - }, - { - "begin": 1415, - "end": 1440, - "name": "SSTORE" - }, - { - "begin": 768, - "end": 778, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1458, - "end": 1478, - "name": "DUP2" - }, - { - "begin": 1458, - "end": 1478, - "name": "LT" - }, - { - "begin": 1454, - "end": 1549, - "name": "ISZERO" - }, - { - "begin": 1454, - "end": 1549, - "name": "PUSH [tag]", - "value": "49" - }, - { - "begin": 1454, - "end": 1549, - "name": "JUMPI" - }, - { - "begin": 1498, - "end": 1512, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP1" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP7" - }, - { - "begin": 1498, - "end": 1512, - "name": "AND" - }, - { - "begin": 1498, - "end": 1512, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1498, - "end": 1512, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP2" - }, - { - "begin": 1498, - "end": 1512, - "name": "MSTORE" - }, - { - "begin": 1498, - "end": 1505, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1498, - "end": 1512, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1498, - "end": 1512, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP2" - }, - { - "begin": 1498, - "end": 1512, - "name": "MSTORE" - }, - { - "begin": 1498, - "end": 1512, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP1" - }, - { - "begin": 1498, - "end": 1512, - "name": "DUP4" - }, - { - "begin": 1498, - "end": 1512, - "name": "SHA3" - }, - { - "begin": 1513, - "end": 1523, - "name": "CALLER" - }, - { - "begin": 1498, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1524, - "name": "SWAP5" - }, - { - "begin": 1498, - "end": 1524, - "name": "AND" - }, - { - "begin": 1498, - "end": 1524, - "name": "DUP4" - }, - { - "begin": 1498, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1498, - "end": 1524, - "name": "SWAP3" - }, - { - "begin": 1498, - "end": 1524, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1524, - "name": "MSTORE" - }, - { - "begin": 1498, - "end": 1524, - "name": "SHA3" - }, - { - "begin": 1498, - "end": 1534, - "name": "DUP1" - }, - { - "begin": 1498, - "end": 1534, - "name": "SLOAD" - }, - { - "begin": 1498, - "end": 1534, - "name": "DUP5" - }, - { - "begin": 1498, - "end": 1534, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1534, - "name": "SUB" - }, - { - "begin": 1498, - "end": 1534, - "name": "SWAP1" - }, - { - "begin": 1498, - "end": 1534, - "name": "SSTORE" - }, - { - "begin": 1454, - "end": 1549, - "name": "tag", - "value": "49" - }, - { - "begin": 1454, - "end": 1549, - "name": "JUMPDEST" - }, - { - "begin": 1578, - "end": 1581, - "name": "DUP4" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1562, - "end": 1590, - "name": "AND" - }, - { - "begin": 1571, - "end": 1576, - "name": "DUP6" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1562, - "end": 1590, - "name": "AND" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF" - }, - { - "begin": 1583, - "end": 1589, - "name": "DUP6" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1562, - "end": 1590, - "name": "MLOAD" - }, - { - "begin": 1562, - "end": 1590, - "name": "DUP1" - }, - { - "begin": 1562, - "end": 1590, - "name": "DUP3" - }, - { - "begin": 1562, - "end": 1590, - "name": "DUP2" - }, - { - "begin": 1562, - "end": 1590, - "name": "MSTORE" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1562, - "end": 1590, - "name": "ADD" - }, - { - "begin": 1562, - "end": 1590, - "name": "SWAP2" - }, - { - "begin": 1562, - "end": 1590, - "name": "POP" - }, - { - "begin": 1562, - "end": 1590, - "name": "POP" - }, - { - "begin": 1562, - "end": 1590, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1562, - "end": 1590, - "name": "MLOAD" - }, - { - "begin": 1562, - "end": 1590, - "name": "DUP1" - }, - { - "begin": 1562, - "end": 1590, - "name": "SWAP2" - }, - { - "begin": 1562, - "end": 1590, - "name": "SUB" - }, - { - "begin": 1562, - "end": 1590, - "name": "SWAP1" - }, - { - "begin": 1562, - "end": 1590, - "name": "LOG3" - }, - { - "begin": 1611, - "end": 1615, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1604, - "end": 1615, - "name": "SWAP2" - }, - { - "begin": 1604, - "end": 1615, - "name": "POP" - }, - { - "begin": 1604, - "end": 1615, - "name": "PUSH [tag]", - "value": "50" - }, - { - "begin": 1604, - "end": 1615, - "name": "JUMP" - }, - { - "begin": 1234, - "end": 1669, - "name": "tag", - "value": "48" - }, - { - "begin": 1234, - "end": 1669, - "name": "JUMPDEST" - }, - { - "begin": 1653, - "end": 1658, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1646, - "end": 1658, - "name": "SWAP2" - }, - { - "begin": 1646, - "end": 1658, - "name": "POP" - }, - { - "begin": 1234, - "end": 1669, - "name": "tag", - "value": "50" - }, - { - "begin": 1234, - "end": 1669, - "name": "JUMPDEST" - }, - { - "begin": 1066, - "end": 1675, - "name": "tag", - "value": "45" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMPDEST" - }, - { - "begin": 1066, - "end": 1675, - "name": "POP" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP4" - }, - { - "begin": 1066, - "end": 1675, - "name": "SWAP3" - }, - { - "begin": 1066, - "end": 1675, - "name": "POP" - }, - { - "begin": 1066, - "end": 1675, - "name": "POP" - }, - { - "begin": 1066, - "end": 1675, - "name": "POP" - }, - { - "begin": 1066, - "end": 1675, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 891, - "end": 926, - "name": "tag", - "value": "28" - }, - { - "begin": 891, - "end": 926, - "name": "JUMPDEST" - }, - { - "begin": 924, - "end": 926, - "name": "PUSH", - "value": "12" - }, - { - "begin": 891, - "end": 926, - "name": "DUP2" - }, - { - "begin": 891, - "end": 926, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 982, - "end": 1081, - "name": "tag", - "value": "31" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPDEST" - }, - { - "begin": 1058, - "end": 1074, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1058, - "end": 1074, - "name": "DUP2" - }, - { - "begin": 1058, - "end": 1074, - "name": "AND" - }, - { - "begin": 1035, - "end": 1039, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1058, - "end": 1074, - "name": "SWAP1" - }, - { - "begin": 1058, - "end": 1074, - "name": "DUP2" - }, - { - "begin": 1058, - "end": 1074, - "name": "MSTORE" - }, - { - "begin": 1058, - "end": 1074, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1058, - "end": 1074, - "name": "DUP2" - }, - { - "begin": 1058, - "end": 1074, - "name": "SWAP1" - }, - { - "begin": 1058, - "end": 1074, - "name": "MSTORE" - }, - { - "begin": 1058, - "end": 1074, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1058, - "end": 1074, - "name": "SWAP1" - }, - { - "begin": 1058, - "end": 1074, - "name": "SHA3" - }, - { - "begin": 1058, - "end": 1074, - "name": "SLOAD" - }, - { - "begin": 982, - "end": 1081, - "name": "tag", - "value": "51" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMPDEST" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP2" - }, - { - "begin": 982, - "end": 1081, - "name": "SWAP1" - }, - { - "begin": 982, - "end": 1081, - "name": "POP" - }, - { - "begin": 982, - "end": 1081, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1064, - "end": 1101, - "name": "tag", - "value": "34" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMPDEST" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "MLOAD" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP3" - }, - { - "begin": 1064, - "end": 1101, - "name": "ADD" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP1" - }, - { - "begin": 1064, - "end": 1101, - "name": "SWAP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "MSTORE" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "3" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "MSTORE" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "5A52580000000000000000000000000000000000000000000000000000000000" - }, - { - "begin": 1064, - "end": 1101, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP3" - }, - { - "begin": 1064, - "end": 1101, - "name": "ADD" - }, - { - "begin": 1064, - "end": 1101, - "name": "MSTORE" - }, - { - "begin": 1064, - "end": 1101, - "name": "DUP2" - }, - { - "begin": 1064, - "end": 1101, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 125, - "end": 535, - "name": "tag", - "value": "40" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPDEST" - }, - { - "begin": 267, - "end": 287, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 276, - "end": 286, - "name": "CALLER" - }, - { - "begin": 267, - "end": 287, - "name": "AND" - }, - { - "begin": 178, - "end": 182, - "name": "PUSH", - "value": "0" - }, - { - "begin": 267, - "end": 287, - "name": "SWAP1" - }, - { - "begin": 267, - "end": 287, - "name": "DUP2" - }, - { - "begin": 267, - "end": 287, - "name": "MSTORE" - }, - { - "begin": 267, - "end": 287, - "name": "PUSH", - "value": "20" - }, - { - "begin": 267, - "end": 287, - "name": "DUP2" - }, - { - "begin": 267, - "end": 287, - "name": "SWAP1" - }, - { - "begin": 267, - "end": 287, - "name": "MSTORE" - }, - { - "begin": 267, - "end": 287, - "name": "PUSH", - "value": "40" - }, - { - "begin": 267, - "end": 287, - "name": "DUP2" - }, - { - "begin": 267, - "end": 287, - "name": "SHA3" - }, - { - "begin": 267, - "end": 287, - "name": "SLOAD" - }, - { - "begin": 267, - "end": 297, - "name": "DUP3" - }, - { - "begin": 267, - "end": 297, - "name": "SWAP1" - }, - { - "begin": 267, - "end": 297, - "name": "LT" - }, - { - "begin": 267, - "end": 297, - "name": "DUP1" - }, - { - "begin": 267, - "end": 297, - "name": "ISZERO" - }, - { - "begin": 267, - "end": 297, - "name": "SWAP1" - }, - { - "begin": 267, - "end": 340, - "name": "PUSH [tag]", - "value": "53" - }, - { - "begin": 267, - "end": 340, - "name": "JUMPI" - }, - { - "begin": -1, - "end": -1, - "name": "POP" - }, - { - "begin": 327, - "end": 340, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 327, - "end": 340, - "name": "DUP4" - }, - { - "begin": 327, - "end": 340, - "name": "AND" - }, - { - "begin": 327, - "end": 335, - "name": "PUSH", - "value": "0" - }, - { - "begin": 327, - "end": 340, - "name": "SWAP1" - }, - { - "begin": 327, - "end": 340, - "name": "DUP2" - }, - { - "begin": 327, - "end": 340, - "name": "MSTORE" - }, - { - "begin": 327, - "end": 340, - "name": "PUSH", - "value": "20" - }, - { - "begin": 327, - "end": 340, - "name": "DUP2" - }, - { - "begin": 327, - "end": 340, - "name": "SWAP1" - }, - { - "begin": 327, - "end": 340, - "name": "MSTORE" - }, - { - "begin": 327, - "end": 340, - "name": "PUSH", - "value": "40" - }, - { - "begin": 327, - "end": 340, - "name": "SWAP1" - }, - { - "begin": 327, - "end": 340, - "name": "SHA3" - }, - { - "begin": 327, - "end": 340, - "name": "SLOAD" - }, - { - "begin": 301, - "end": 323, - "name": "DUP3" - }, - { - "begin": 301, - "end": 323, - "name": "DUP2" - }, - { - "begin": 301, - "end": 323, - "name": "ADD" - }, - { - "begin": 301, - "end": 340, - "name": "LT" - }, - { - "begin": 301, - "end": 340, - "name": "ISZERO" - }, - { - "begin": 267, - "end": 340, - "name": "tag", - "value": "53" - }, - { - "begin": 267, - "end": 340, - "name": "JUMPDEST" - }, - { - "begin": 263, - "end": 529, - "name": "ISZERO" - }, - { - "begin": 263, - "end": 529, - "name": "PUSH [tag]", - "value": "54" - }, - { - "begin": 263, - "end": 529, - "name": "JUMPI" - }, - { - "begin": 356, - "end": 376, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 365, - "end": 375, - "name": "CALLER" - }, - { - "begin": 356, - "end": 376, - "name": "DUP2" - }, - { - "begin": 356, - "end": 376, - "name": "AND" - }, - { - "begin": 356, - "end": 364, - "name": "PUSH", - "value": "0" - }, - { - "begin": 356, - "end": 376, - "name": "DUP2" - }, - { - "begin": 356, - "end": 376, - "name": "DUP2" - }, - { - "begin": 356, - "end": 376, - "name": "MSTORE" - }, - { - "begin": 356, - "end": 376, - "name": "PUSH", - "value": "20" - }, - { - "begin": 356, - "end": 376, - "name": "DUP2" - }, - { - "begin": 356, - "end": 376, - "name": "DUP2" - }, - { - "begin": 356, - "end": 376, - "name": "MSTORE" - }, - { - "begin": 356, - "end": 376, - "name": "PUSH", - "value": "40" - }, - { - "begin": 356, - "end": 376, - "name": "DUP1" - }, - { - "begin": 356, - "end": 376, - "name": "DUP4" - }, - { - "begin": 356, - "end": 376, - "name": "SHA3" - }, - { - "begin": 356, - "end": 386, - "name": "DUP1" - }, - { - "begin": 356, - "end": 386, - "name": "SLOAD" - }, - { - "begin": 356, - "end": 386, - "name": "DUP9" - }, - { - "begin": 356, - "end": 386, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 386, - "name": "SUB" - }, - { - "begin": 356, - "end": 386, - "name": "SWAP1" - }, - { - "begin": 356, - "end": 386, - "name": "SSTORE" - }, - { - "begin": 400, - "end": 413, - "name": "SWAP4" - }, - { - "begin": 400, - "end": 413, - "name": "DUP8" - }, - { - "begin": 400, - "end": 413, - "name": "AND" - }, - { - "begin": 400, - "end": 413, - "name": "DUP1" - }, - { - "begin": 400, - "end": 413, - "name": "DUP4" - }, - { - "begin": 400, - "end": 413, - "name": "MSTORE" - }, - { - "begin": 400, - "end": 413, - "name": "SWAP2" - }, - { - "begin": 400, - "end": 413, - "name": "DUP5" - }, - { - "begin": 400, - "end": 413, - "name": "SWAP1" - }, - { - "begin": 400, - "end": 413, - "name": "SHA3" - }, - { - "begin": 400, - "end": 423, - "name": "DUP1" - }, - { - "begin": 400, - "end": 423, - "name": "SLOAD" - }, - { - "begin": 400, - "end": 423, - "name": "DUP8" - }, - { - "begin": 400, - "end": 423, - "name": "ADD" - }, - { - "begin": 400, - "end": 423, - "name": "SWAP1" - }, - { - "begin": 400, - "end": 423, - "name": "SSTORE" - }, - { - "begin": 437, - "end": 470, - "name": "DUP4" - }, - { - "begin": 437, - "end": 470, - "name": "MLOAD" - }, - { - "begin": 437, - "end": 470, - "name": "DUP7" - }, - { - "begin": 437, - "end": 470, - "name": "DUP2" - }, - { - "begin": 437, - "end": 470, - "name": "MSTORE" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP4" - }, - { - "begin": 437, - "end": 470, - "name": "MLOAD" - }, - { - "begin": 400, - "end": 413, - "name": "SWAP2" - }, - { - "begin": 400, - "end": 413, - "name": "SWAP4" - }, - { - "begin": 437, - "end": 470, - "name": "PUSH", - "value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP3" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP1" - }, - { - "begin": 437, - "end": 470, - "name": "DUP2" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP1" - }, - { - "begin": 437, - "end": 470, - "name": "SUB" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP1" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP2" - }, - { - "begin": 437, - "end": 470, - "name": "ADD" - }, - { - "begin": 437, - "end": 470, - "name": "SWAP1" - }, - { - "begin": 437, - "end": 470, - "name": "LOG3" - }, - { - "begin": -1, - "end": -1, - "name": "POP" - }, - { - "begin": 491, - "end": 495, - "name": "PUSH", - "value": "1" - }, - { - "begin": 484, - "end": 495, - "name": "PUSH [tag]", - "value": "44" - }, - { - "begin": 484, - "end": 495, - "name": "JUMP" - }, - { - "begin": 263, - "end": 529, - "name": "tag", - "value": "54" - }, - { - "begin": 263, - "end": 529, - "name": "JUMPDEST" - }, - { - "begin": -1, - "end": -1, - "name": "POP" - }, - { - "begin": 521, - "end": 526, - "name": "PUSH", - "value": "0" - }, - { - "begin": 514, - "end": 526, - "name": "PUSH [tag]", - "value": "44" - }, - { - "begin": 514, - "end": 526, - "name": "JUMP" - }, - { - "begin": 263, - "end": 529, - "name": "tag", - "value": "55" - }, - { - "begin": 263, - "end": 529, - "name": "JUMPDEST" - }, - { - "begin": 125, - "end": 535, - "name": "tag", - "value": "52" - }, - { - "begin": 125, - "end": 535, - "name": "JUMPDEST" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP3" - }, - { - "begin": 125, - "end": 535, - "name": "SWAP2" - }, - { - "begin": 125, - "end": 535, - "name": "POP" - }, - { - "begin": 125, - "end": 535, - "name": "POP" - }, - { - "begin": 125, - "end": 535, - "name": "JUMP", - "value": "[out]" - }, - { - "begin": 1280, - "end": 1406, - "name": "tag", - "value": "43" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPDEST" - }, - { - "begin": 1374, - "end": 1389, - "name": "PUSH", - "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP1" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP4" - }, - { - "begin": 1374, - "end": 1389, - "name": "AND" - }, - { - "begin": 1351, - "end": 1355, - "name": "PUSH", - "value": "0" - }, - { - "begin": 1374, - "end": 1389, - "name": "SWAP1" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP2" - }, - { - "begin": 1374, - "end": 1389, - "name": "MSTORE" - }, - { - "begin": 1374, - "end": 1381, - "name": "PUSH", - "value": "1" - }, - { - "begin": 1374, - "end": 1389, - "name": "PUSH", - "value": "20" - }, - { - "begin": 1374, - "end": 1389, - "name": "SWAP1" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP2" - }, - { - "begin": 1374, - "end": 1389, - "name": "MSTORE" - }, - { - "begin": 1374, - "end": 1389, - "name": "PUSH", - "value": "40" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP1" - }, - { - "begin": 1374, - "end": 1389, - "name": "DUP4" - }, - { - "begin": 1374, - "end": 1389, - "name": "SHA3" - }, - { - "begin": 1374, - "end": 1399, - "name": "SWAP4" - }, - { - "begin": 1374, - "end": 1399, - "name": "DUP6" - }, - { - "begin": 1374, - "end": 1399, - "name": "AND" - }, - { - "begin": 1374, - "end": 1399, - "name": "DUP4" - }, - { - "begin": 1374, - "end": 1399, - "name": "MSTORE" - }, - { - "begin": 1374, - "end": 1399, - "name": "SWAP3" - }, - { - "begin": 1374, - "end": 1399, - "name": "SWAP1" - }, - { - "begin": 1374, - "end": 1399, - "name": "MSTORE" - }, - { - "begin": 1374, - "end": 1399, - "name": "SHA3" - }, - { - "begin": 1374, - "end": 1399, - "name": "SLOAD" - }, - { - "begin": 1280, - "end": 1406, - "name": "tag", - "value": "56" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMPDEST" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP3" - }, - { - "begin": 1280, - "end": 1406, - "name": "SWAP2" - }, - { - "begin": 1280, - "end": 1406, - "name": "POP" - }, - { - "begin": 1280, - "end": 1406, - "name": "POP" - }, - { - "begin": 1280, - "end": 1406, - "name": "JUMP", - "value": "[out]" - } - ] - } - } - }, - "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "decimals()": "313ce567", - "name()": "06fdde03", - "symbol()": "95d89b41", - "totalSupply()": "18160ddd", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" - } - }, - "metadata": - "{\"compiler\":{\"version\":\"0.4.11+commit.68ef5810\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"transferFrom(address,address,uint256)\":{\"details\":\"ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.\",\"params\":{\"_from\":\"Address to transfer from.\",\"_to\":\"Address to transfer to.\",\"_value\":\"Amount to transfer.\"},\"return\":\"Success of transfer.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"2.0.0/tokens/ZRXToken/ZRXToken.sol\":\"ZRXToken\"},\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"1.0.0/ERC20Token/ERC20Token_v1.sol\":{\"keccak256\":\"0x3d710b436c430d6fe49f64b091555405360d76da6454b93faa8e213eea34a96d\",\"urls\":[\"bzzr://d12710a563415ad98ff28ecb3aab0b68467b3d023e7c130c73ed9918ef86158e\"]},\"1.0.0/Token/Token_v1.sol\":{\"keccak256\":\"0x35a82bc7bc0994caa97f8ea44660b9b5e796acfe72705b5ff7ed8f2a3c47ff37\",\"urls\":[\"bzzr://a62ae857a4cf2e8948e36d02470c612ac1a5ac20ebe1c1b553ad1ed8becb634e\"]},\"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":{\"keccak256\":\"0x2e1f4b899081cedd8940a9cd0f0f7413264c883312ed0ba9c53885766fe0a1a5\",\"urls\":[\"bzzr://47c42a58e56ffe81e49c8aabd3c391f5fa807fea299b3a2178501e3669baeb52\"]},\"2.0.0/tokens/ZRXToken/ZRXToken.sol\":{\"keccak256\":\"0x9eeb623d48909b083c77688b13b610811c53e37622b3fcbaa23c01873230f5d6\",\"urls\":[\"bzzr://84f3b5c2653068092771d443281018ff2ee0543817426d0fb6f9037a3570e37f\"]}},\"version\":1}", - "userdoc": { - "methods": {} - } - }, - "sources": { - "1.0.0/ERC20Token/ERC20Token_v1.sol": { - "id": 0, - "legacyAST": { - "children": [ - { - "attributes": { - "literals": ["solidity", "^", "0.4", ".11"] - }, - "id": 126, - "name": "PragmaDirective", - "src": "0:24:0" - }, - { - "attributes": { - "file": "../Token/Token_v1.sol" - }, - "id": 128, - "name": "ImportDirective", - "src": "26:58:0" - }, - { - "attributes": { - "fullyImplemented": true, - "isLibrary": false, - "linearizedBaseContracts": [322, 397], - "name": "ERC20Token_v1" - }, - "children": [ - { - "children": [ - { - "attributes": { - "name": "Token" - }, - "id": 129, - "name": "UserDefinedTypeName", - "src": "112:5:0" - } - ], - "id": 130, - "name": "InheritanceSpecifier", - "src": "112:5:0" - }, - { - "attributes": { - "constant": false, - "name": "transfer", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 131, - "name": "ElementaryTypeName", - "src": "143:7:0" - } - ], - "id": 132, - "name": "VariableDeclaration", - "src": "143:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 133, - "name": "ElementaryTypeName", - "src": "156:4:0" - } - ], - "id": 134, - "name": "VariableDeclaration", - "src": "156:11:0" - } - ], - "id": 135, - "name": "ParameterList", - "src": "142:26:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 136, - "name": "ElementaryTypeName", - "src": "178:4:0" - } - ], - "id": 137, - "name": "VariableDeclaration", - "src": "178:4:0" - } - ], - "id": 138, - "name": "ParameterList", - "src": "177:6:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 139, - "name": "Identifier", - "src": "267:8:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 140, - "name": "Identifier", - "src": "276:3:0" - } - ], - "id": 141, - "name": "MemberAccess", - "src": "276:10:0" - } - ], - "id": 142, - "name": "IndexAccess", - "src": "267:20:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 143, - "name": "Identifier", - "src": "291:6:0" - } - ], - "id": 144, - "name": "BinaryOperation", - "src": "267:30:0" - }, - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 145, - "name": "Identifier", - "src": "301:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 146, - "name": "Identifier", - "src": "310:3:0" - } - ], - "id": 147, - "name": "IndexAccess", - "src": "301:13:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 148, - "name": "Identifier", - "src": "317:6:0" - } - ], - "id": 149, - "name": "BinaryOperation", - "src": "301:22:0" - }, - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 150, - "name": "Identifier", - "src": "327:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 151, - "name": "Identifier", - "src": "336:3:0" - } - ], - "id": 152, - "name": "IndexAccess", - "src": "327:13:0" - } - ], - "id": 153, - "name": "BinaryOperation", - "src": "301:39:0" - } - ], - "id": 154, - "name": "BinaryOperation", - "src": "267:73:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "-=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 155, - "name": "Identifier", - "src": "356:8:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 156, - "name": "Identifier", - "src": "365:3:0" - } - ], - "id": 157, - "name": "MemberAccess", - "src": "365:10:0" - } - ], - "id": 158, - "name": "IndexAccess", - "src": "356:20:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 159, - "name": "Identifier", - "src": "380:6:0" - } - ], - "id": 160, - "name": "Assignment", - "src": "356:30:0" - } - ], - "id": 161, - "name": "ExpressionStatement", - "src": "356:30:0" - }, - { - "children": [ - { - "attributes": { - "operator": "+=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 162, - "name": "Identifier", - "src": "400:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 163, - "name": "Identifier", - "src": "409:3:0" - } - ], - "id": 164, - "name": "IndexAccess", - "src": "400:13:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 165, - "name": "Identifier", - "src": "417:6:0" - } - ], - "id": 166, - "name": "Assignment", - "src": "400:23:0" - } - ], - "id": 167, - "name": "ExpressionStatement", - "src": "400:23:0" - }, - { - "children": [ - { - "attributes": { - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "type": - "function (address,address,uint256) constant", - "value": "Transfer" - }, - "id": 168, - "name": "Identifier", - "src": "437:8:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 169, - "name": "Identifier", - "src": "446:3:0" - } - ], - "id": 170, - "name": "MemberAccess", - "src": "446:10:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 171, - "name": "Identifier", - "src": "458:3:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 172, - "name": "Identifier", - "src": "463:6:0" - } - ], - "id": 173, - "name": "FunctionCall", - "src": "437:33:0" - } - ], - "id": 174, - "name": "ExpressionStatement", - "src": "437:33:0" - }, - { - "children": [ - { - "attributes": { - "hexvalue": "74727565", - "subdenomination": null, - "token": "true", - "type": "bool", - "value": "true" - }, - "id": 175, - "name": "Literal", - "src": "491:4:0" - } - ], - "id": 176, - "name": "Return", - "src": "484:11:0" - } - ], - "id": 177, - "name": "Block", - "src": "342:164:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "hexvalue": "66616c7365", - "subdenomination": null, - "token": "false", - "type": "bool", - "value": "false" - }, - "id": 178, - "name": "Literal", - "src": "521:5:0" - } - ], - "id": 179, - "name": "Return", - "src": "514:12:0" - } - ], - "id": 180, - "name": "Block", - "src": "512:17:0" - } - ], - "id": 181, - "name": "IfStatement", - "src": "263:266:0" - } - ], - "id": 182, - "name": "Block", - "src": "184:351:0" - } - ], - "id": 183, - "name": "FunctionDefinition", - "src": "125:410:0" - }, - { - "attributes": { - "constant": false, - "name": "transferFrom", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 184, - "name": "ElementaryTypeName", - "src": "563:7:0" - } - ], - "id": 185, - "name": "VariableDeclaration", - "src": "563:13:0" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 186, - "name": "ElementaryTypeName", - "src": "578:7:0" - } - ], - "id": 187, - "name": "VariableDeclaration", - "src": "578:11:0" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 188, - "name": "ElementaryTypeName", - "src": "591:4:0" - } - ], - "id": 189, - "name": "VariableDeclaration", - "src": "591:11:0" - } - ], - "id": 190, - "name": "ParameterList", - "src": "562:41:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 191, - "name": "ElementaryTypeName", - "src": "613:4:0" - } - ], - "id": 192, - "name": "VariableDeclaration", - "src": "613:4:0" - } - ], - "id": 193, - "name": "ParameterList", - "src": "612:6:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 194, - "name": "Identifier", - "src": "633:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 195, - "name": "Identifier", - "src": "642:5:0" - } - ], - "id": 196, - "name": "IndexAccess", - "src": "633:15:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 197, - "name": "Identifier", - "src": "652:6:0" - } - ], - "id": 198, - "name": "BinaryOperation", - "src": "633:25:0" - }, - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": "allowed" - }, - "id": 199, - "name": "Identifier", - "src": "662:7:0" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 200, - "name": "Identifier", - "src": "670:5:0" - } - ], - "id": 201, - "name": "IndexAccess", - "src": "662:14:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 202, - "name": "Identifier", - "src": "677:3:0" - } - ], - "id": 203, - "name": "MemberAccess", - "src": "677:10:0" - } - ], - "id": 204, - "name": "IndexAccess", - "src": "662:26:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 205, - "name": "Identifier", - "src": "692:6:0" - } - ], - "id": 206, - "name": "BinaryOperation", - "src": "662:36:0" - } - ], - "id": 207, - "name": "BinaryOperation", - "src": "633:65:0" - }, - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 208, - "name": "Identifier", - "src": "702:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 209, - "name": "Identifier", - "src": "711:3:0" - } - ], - "id": 210, - "name": "IndexAccess", - "src": "702:13:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 211, - "name": "Identifier", - "src": "718:6:0" - } - ], - "id": 212, - "name": "BinaryOperation", - "src": "702:22:0" - }, - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 213, - "name": "Identifier", - "src": "728:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 214, - "name": "Identifier", - "src": "737:3:0" - } - ], - "id": 215, - "name": "IndexAccess", - "src": "728:13:0" - } - ], - "id": 216, - "name": "BinaryOperation", - "src": "702:39:0" - } - ], - "id": 217, - "name": "BinaryOperation", - "src": "633:108:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "+=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 218, - "name": "Identifier", - "src": "757:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 219, - "name": "Identifier", - "src": "766:3:0" - } - ], - "id": 220, - "name": "IndexAccess", - "src": "757:13:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 221, - "name": "Identifier", - "src": "774:6:0" - } - ], - "id": 222, - "name": "Assignment", - "src": "757:23:0" - } - ], - "id": 223, - "name": "ExpressionStatement", - "src": "757:23:0" - }, - { - "children": [ - { - "attributes": { - "operator": "-=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 224, - "name": "Identifier", - "src": "794:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 225, - "name": "Identifier", - "src": "803:5:0" - } - ], - "id": 226, - "name": "IndexAccess", - "src": "794:15:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 227, - "name": "Identifier", - "src": "813:6:0" - } - ], - "id": 228, - "name": "Assignment", - "src": "794:25:0" - } - ], - "id": 229, - "name": "ExpressionStatement", - "src": "794:25:0" - }, - { - "children": [ - { - "attributes": { - "operator": "-=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": "allowed" - }, - "id": 230, - "name": "Identifier", - "src": "833:7:0" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 231, - "name": "Identifier", - "src": "841:5:0" - } - ], - "id": 234, - "name": "IndexAccess", - "src": "833:14:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 232, - "name": "Identifier", - "src": "848:3:0" - } - ], - "id": 233, - "name": "MemberAccess", - "src": "848:10:0" - } - ], - "id": 235, - "name": "IndexAccess", - "src": "833:26:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 236, - "name": "Identifier", - "src": "863:6:0" - } - ], - "id": 237, - "name": "Assignment", - "src": "833:36:0" - } - ], - "id": 238, - "name": "ExpressionStatement", - "src": "833:36:0" - }, - { - "children": [ - { - "attributes": { - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "type": - "function (address,address,uint256) constant", - "value": "Transfer" - }, - "id": 239, - "name": "Identifier", - "src": "883:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 240, - "name": "Identifier", - "src": "892:5:0" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 241, - "name": "Identifier", - "src": "899:3:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 242, - "name": "Identifier", - "src": "904:6:0" - } - ], - "id": 243, - "name": "FunctionCall", - "src": "883:28:0" - } - ], - "id": 244, - "name": "ExpressionStatement", - "src": "883:28:0" - }, - { - "children": [ - { - "attributes": { - "hexvalue": "74727565", - "subdenomination": null, - "token": "true", - "type": "bool", - "value": "true" - }, - "id": 245, - "name": "Literal", - "src": "932:4:0" - } - ], - "id": 246, - "name": "Return", - "src": "925:11:0" - } - ], - "id": 247, - "name": "Block", - "src": "743:204:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "hexvalue": "66616c7365", - "subdenomination": null, - "token": "false", - "type": "bool", - "value": "false" - }, - "id": 248, - "name": "Literal", - "src": "962:5:0" - } - ], - "id": 249, - "name": "Return", - "src": "955:12:0" - } - ], - "id": 250, - "name": "Block", - "src": "953:17:0" - } - ], - "id": 251, - "name": "IfStatement", - "src": "629:341:0" - } - ], - "id": 252, - "name": "Block", - "src": "619:357:0" - } - ], - "id": 253, - "name": "FunctionDefinition", - "src": "541:435:0" - }, - { - "attributes": { - "constant": true, - "name": "balanceOf", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_owner", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 254, - "name": "ElementaryTypeName", - "src": "1001:7:0" - } - ], - "id": 255, - "name": "VariableDeclaration", - "src": "1001:14:0" - } - ], - "id": 256, - "name": "ParameterList", - "src": "1000:16:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 257, - "name": "ElementaryTypeName", - "src": "1035:4:0" - } - ], - "id": 258, - "name": "VariableDeclaration", - "src": "1035:4:0" - } - ], - "id": 259, - "name": "ParameterList", - "src": "1034:6:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)", - "value": "balances" - }, - "id": 260, - "name": "Identifier", - "src": "1058:8:0" - }, - { - "attributes": { - "type": "address", - "value": "_owner" - }, - "id": 261, - "name": "Identifier", - "src": "1067:6:0" - } - ], - "id": 262, - "name": "IndexAccess", - "src": "1058:16:0" - } - ], - "id": 263, - "name": "Return", - "src": "1051:23:0" - } - ], - "id": 264, - "name": "Block", - "src": "1041:40:0" - } - ], - "id": 265, - "name": "FunctionDefinition", - "src": "982:99:0" - }, - { - "attributes": { - "constant": false, - "name": "approve", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_spender", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 266, - "name": "ElementaryTypeName", - "src": "1104:7:0" - } - ], - "id": 267, - "name": "VariableDeclaration", - "src": "1104:16:0" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 268, - "name": "ElementaryTypeName", - "src": "1122:4:0" - } - ], - "id": 269, - "name": "VariableDeclaration", - "src": "1122:11:0" - } - ], - "id": 270, - "name": "ParameterList", - "src": "1103:31:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 271, - "name": "ElementaryTypeName", - "src": "1144:4:0" - } - ], - "id": 272, - "name": "VariableDeclaration", - "src": "1144:4:0" - } - ], - "id": 273, - "name": "ParameterList", - "src": "1143:6:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": "allowed" - }, - "id": 274, - "name": "Identifier", - "src": "1160:7:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 275, - "name": "Identifier", - "src": "1168:3:0" - } - ], - "id": 276, - "name": "MemberAccess", - "src": "1168:10:0" - } - ], - "id": 278, - "name": "IndexAccess", - "src": "1160:19:0" - }, - { - "attributes": { - "type": "address", - "value": "_spender" - }, - "id": 277, - "name": "Identifier", - "src": "1180:8:0" - } - ], - "id": 279, - "name": "IndexAccess", - "src": "1160:29:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 280, - "name": "Identifier", - "src": "1192:6:0" - } - ], - "id": 281, - "name": "Assignment", - "src": "1160:38:0" - } - ], - "id": 282, - "name": "ExpressionStatement", - "src": "1160:38:0" - }, - { - "children": [ - { - "attributes": { - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "type": - "function (address,address,uint256) constant", - "value": "Approval" - }, - "id": 283, - "name": "Identifier", - "src": "1208:8:0" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 284, - "name": "Identifier", - "src": "1217:3:0" - } - ], - "id": 285, - "name": "MemberAccess", - "src": "1217:10:0" - }, - { - "attributes": { - "type": "address", - "value": "_spender" - }, - "id": 286, - "name": "Identifier", - "src": "1229:8:0" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 287, - "name": "Identifier", - "src": "1239:6:0" - } - ], - "id": 288, - "name": "FunctionCall", - "src": "1208:38:0" - } - ], - "id": 289, - "name": "ExpressionStatement", - "src": "1208:38:0" - }, - { - "children": [ - { - "attributes": { - "hexvalue": "74727565", - "subdenomination": null, - "token": "true", - "type": "bool", - "value": "true" - }, - "id": 290, - "name": "Literal", - "src": "1263:4:0" - } - ], - "id": 291, - "name": "Return", - "src": "1256:11:0" - } - ], - "id": 292, - "name": "Block", - "src": "1150:124:0" - } - ], - "id": 293, - "name": "FunctionDefinition", - "src": "1087:187:0" - }, - { - "attributes": { - "constant": true, - "name": "allowance", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_owner", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 294, - "name": "ElementaryTypeName", - "src": "1299:7:0" - } - ], - "id": 295, - "name": "VariableDeclaration", - "src": "1299:14:0" - }, - { - "attributes": { - "constant": false, - "name": "_spender", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 296, - "name": "ElementaryTypeName", - "src": "1315:7:0" - } - ], - "id": 297, - "name": "VariableDeclaration", - "src": "1315:16:0" - } - ], - "id": 298, - "name": "ParameterList", - "src": "1298:34:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 299, - "name": "ElementaryTypeName", - "src": "1351:4:0" - } - ], - "id": 300, - "name": "VariableDeclaration", - "src": "1351:4:0" - } - ], - "id": 301, - "name": "ParameterList", - "src": "1350:6:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": "allowed" - }, - "id": 302, - "name": "Identifier", - "src": "1374:7:0" - }, - { - "attributes": { - "type": "address", - "value": "_owner" - }, - "id": 303, - "name": "Identifier", - "src": "1382:6:0" - } - ], - "id": 304, - "name": "IndexAccess", - "src": "1374:15:0" - }, - { - "attributes": { - "type": "address", - "value": "_spender" - }, - "id": 305, - "name": "Identifier", - "src": "1390:8:0" - } - ], - "id": 306, - "name": "IndexAccess", - "src": "1374:25:0" - } - ], - "id": 307, - "name": "Return", - "src": "1367:32:0" - } - ], - "id": 308, - "name": "Block", - "src": "1357:49:0" - } - ], - "id": 309, - "name": "FunctionDefinition", - "src": "1280:126:0" - }, - { - "attributes": { - "constant": false, - "name": "balances", - "storageLocation": "default", - "type": "mapping(address => uint256)", - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 310, - "name": "ElementaryTypeName", - "src": "1421:7:0" - }, - { - "attributes": { - "name": "uint" - }, - "id": 311, - "name": "ElementaryTypeName", - "src": "1432:4:0" - } - ], - "id": 312, - "name": "Mapping", - "src": "1412:25:0" - } - ], - "id": 313, - "name": "VariableDeclaration", - "src": "1412:34:0" - }, - { - "attributes": { - "constant": false, - "name": "allowed", - "storageLocation": "default", - "type": "mapping(address => mapping(address => uint256))", - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 314, - "name": "ElementaryTypeName", - "src": "1461:7:0" - }, - { - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 315, - "name": "ElementaryTypeName", - "src": "1481:7:0" - }, - { - "attributes": { - "name": "uint" - }, - "id": 316, - "name": "ElementaryTypeName", - "src": "1492:4:0" - } - ], - "id": 317, - "name": "Mapping", - "src": "1472:25:0" - } - ], - "id": 318, - "name": "Mapping", - "src": "1452:46:0" - } - ], - "id": 319, - "name": "VariableDeclaration", - "src": "1452:54:0" - }, - { - "attributes": { - "constant": false, - "name": "totalSupply", - "storageLocation": "default", - "type": "uint256", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 320, - "name": "ElementaryTypeName", - "src": "1512:4:0" - } - ], - "id": 321, - "name": "VariableDeclaration", - "src": "1512:23:0" - } - ], - "id": 322, - "name": "ContractDefinition", - "src": "86:1452:0" - } - ], - "name": "SourceUnit" - } - }, - "1.0.0/Token/Token_v1.sol": { - "id": 1, - "legacyAST": { - "children": [ - { - "attributes": { - "literals": ["solidity", "^", "0.4", ".11"] - }, - "id": 324, - "name": "PragmaDirective", - "src": "0:24:1" - }, - { - "attributes": { - "fullyImplemented": true, - "isLibrary": false, - "linearizedBaseContracts": [397], - "name": "Token_v1" - }, - "children": [ - { - "attributes": { - "constant": true, - "name": "totalSupply", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [], - "id": 325, - "name": "ParameterList", - "src": "110:2:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "supply", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 326, - "name": "ElementaryTypeName", - "src": "131:4:1" - } - ], - "id": 327, - "name": "VariableDeclaration", - "src": "131:11:1" - } - ], - "id": 328, - "name": "ParameterList", - "src": "130:13:1" - }, - { - "children": [], - "id": 329, - "name": "Block", - "src": "144:2:1" - } - ], - "id": 330, - "name": "FunctionDefinition", - "src": "90:56:1" - }, - { - "attributes": { - "constant": true, - "name": "balanceOf", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_owner", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 331, - "name": "ElementaryTypeName", - "src": "274:7:1" - } - ], - "id": 332, - "name": "VariableDeclaration", - "src": "274:14:1" - } - ], - "id": 333, - "name": "ParameterList", - "src": "273:16:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "balance", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 334, - "name": "ElementaryTypeName", - "src": "308:4:1" - } - ], - "id": 335, - "name": "VariableDeclaration", - "src": "308:12:1" - } - ], - "id": 336, - "name": "ParameterList", - "src": "307:14:1" - }, - { - "children": [], - "id": 337, - "name": "Block", - "src": "322:2:1" - } - ], - "id": 338, - "name": "FunctionDefinition", - "src": "255:69:1" - }, - { - "attributes": { - "constant": false, - "name": "transfer", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 339, - "name": "ElementaryTypeName", - "src": "578:7:1" - } - ], - "id": 340, - "name": "VariableDeclaration", - "src": "578:11:1" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 341, - "name": "ElementaryTypeName", - "src": "591:4:1" - } - ], - "id": 342, - "name": "VariableDeclaration", - "src": "591:11:1" - } - ], - "id": 343, - "name": "ParameterList", - "src": "577:26:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 344, - "name": "ElementaryTypeName", - "src": "613:4:1" - } - ], - "id": 345, - "name": "VariableDeclaration", - "src": "613:12:1" - } - ], - "id": 346, - "name": "ParameterList", - "src": "612:14:1" - }, - { - "children": [], - "id": 347, - "name": "Block", - "src": "627:2:1" - } - ], - "id": 348, - "name": "FunctionDefinition", - "src": "560:69:1" - }, - { - "attributes": { - "constant": false, - "name": "transferFrom", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 349, - "name": "ElementaryTypeName", - "src": "972:7:1" - } - ], - "id": 350, - "name": "VariableDeclaration", - "src": "972:13:1" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 351, - "name": "ElementaryTypeName", - "src": "987:7:1" - } - ], - "id": 352, - "name": "VariableDeclaration", - "src": "987:11:1" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 353, - "name": "ElementaryTypeName", - "src": "1000:4:1" - } - ], - "id": 354, - "name": "VariableDeclaration", - "src": "1000:11:1" - } - ], - "id": 355, - "name": "ParameterList", - "src": "971:41:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 356, - "name": "ElementaryTypeName", - "src": "1022:4:1" - } - ], - "id": 357, - "name": "VariableDeclaration", - "src": "1022:12:1" - } - ], - "id": 358, - "name": "ParameterList", - "src": "1021:14:1" - }, - { - "children": [], - "id": 359, - "name": "Block", - "src": "1036:2:1" - } - ], - "id": 360, - "name": "FunctionDefinition", - "src": "950:88:1" - }, - { - "attributes": { - "constant": false, - "name": "approve", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_spender", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 361, - "name": "ElementaryTypeName", - "src": "1338:7:1" - } - ], - "id": 362, - "name": "VariableDeclaration", - "src": "1338:16:1" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 363, - "name": "ElementaryTypeName", - "src": "1356:4:1" - } - ], - "id": 364, - "name": "VariableDeclaration", - "src": "1356:11:1" - } - ], - "id": 365, - "name": "ParameterList", - "src": "1337:31:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 366, - "name": "ElementaryTypeName", - "src": "1378:4:1" - } - ], - "id": 367, - "name": "VariableDeclaration", - "src": "1378:12:1" - } - ], - "id": 368, - "name": "ParameterList", - "src": "1377:14:1" - }, - { - "children": [], - "id": 369, - "name": "Block", - "src": "1392:2:1" - } - ], - "id": 370, - "name": "FunctionDefinition", - "src": "1321:73:1" - }, - { - "attributes": { - "constant": true, - "name": "allowance", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_owner", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 371, - "name": "ElementaryTypeName", - "src": "1621:7:1" - } - ], - "id": 372, - "name": "VariableDeclaration", - "src": "1621:14:1" - }, - { - "attributes": { - "constant": false, - "name": "_spender", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 373, - "name": "ElementaryTypeName", - "src": "1637:7:1" - } - ], - "id": 374, - "name": "VariableDeclaration", - "src": "1637:16:1" - } - ], - "id": 375, - "name": "ParameterList", - "src": "1620:34:1" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "remaining", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 376, - "name": "ElementaryTypeName", - "src": "1673:4:1" - } - ], - "id": 377, - "name": "VariableDeclaration", - "src": "1673:14:1" - } - ], - "id": 378, - "name": "ParameterList", - "src": "1672:16:1" - }, - { - "children": [], - "id": 379, - "name": "Block", - "src": "1689:2:1" - } - ], - "id": 380, - "name": "FunctionDefinition", - "src": "1602:89:1" - }, - { - "attributes": { - "name": "Transfer" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "_from", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 381, - "name": "ElementaryTypeName", - "src": "1712:7:1" - } - ], - "id": 382, - "name": "VariableDeclaration", - "src": "1712:21:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 383, - "name": "ElementaryTypeName", - "src": "1735:7:1" - } - ], - "id": 384, - "name": "VariableDeclaration", - "src": "1735:19:1" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 385, - "name": "ElementaryTypeName", - "src": "1756:4:1" - } - ], - "id": 386, - "name": "VariableDeclaration", - "src": "1756:11:1" - } - ], - "id": 387, - "name": "ParameterList", - "src": "1711:57:1" - } - ], - "id": 388, - "name": "EventDefinition", - "src": "1697:72:1" - }, - { - "attributes": { - "name": "Approval" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "_owner", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 389, - "name": "ElementaryTypeName", - "src": "1789:7:1" - } - ], - "id": 390, - "name": "VariableDeclaration", - "src": "1789:22:1" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "_spender", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 391, - "name": "ElementaryTypeName", - "src": "1813:7:1" - } - ], - "id": 392, - "name": "VariableDeclaration", - "src": "1813:24:1" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 393, - "name": "ElementaryTypeName", - "src": "1839:4:1" - } - ], - "id": 394, - "name": "VariableDeclaration", - "src": "1839:11:1" - } - ], - "id": 395, - "name": "ParameterList", - "src": "1788:63:1" - } - ], - "id": 396, - "name": "EventDefinition", - "src": "1774:78:1" - } - ], - "id": 397, - "name": "ContractDefinition", - "src": "26:1828:1" - } - ], - "name": "SourceUnit" - } - }, - "1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol": { - "id": 2, - "legacyAST": { - "children": [ - { - "attributes": { - "literals": ["solidity", "^", "0.4", ".11"] - }, - "id": 33, - "name": "PragmaDirective", - "src": "580:24:2" - }, - { - "attributes": { - "file": "../ERC20Token/ERC20Token_v1.sol" - }, - "id": 35, - "name": "ImportDirective", - "src": "606:78:2" - }, - { - "attributes": { - "fullyImplemented": true, - "isLibrary": false, - "linearizedBaseContracts": [124, 322, 397], - "name": "UnlimitedAllowanceToken_v1" - }, - "children": [ - { - "children": [ - { - "attributes": { - "name": "ERC20Token" - }, - "id": 36, - "name": "UserDefinedTypeName", - "src": "725:10:2" - } - ], - "id": 37, - "name": "InheritanceSpecifier", - "src": "725:10:2" - }, - { - "attributes": { - "constant": true, - "name": "MAX_UINT", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 38, - "name": "ElementaryTypeName", - "src": "743:4:2" - }, - { - "attributes": { - "operator": "-", - "type": - "int_const 115792089237316195423570985008687907853269984665640564039457584007913129639935" - }, - "children": [ - { - "attributes": { - "operator": "**", - "type": - "int_const 115792089237316195423570985008687907853269984665640564039457584007913129639936" - }, - "children": [ - { - "attributes": { - "hexvalue": "32", - "subdenomination": null, - "token": null, - "type": "int_const 2", - "value": "2" - }, - "id": 39, - "name": "Literal", - "src": "768:1:2" - }, - { - "attributes": { - "hexvalue": "323536", - "subdenomination": null, - "token": null, - "type": "int_const 256", - "value": "256" - }, - "id": 40, - "name": "Literal", - "src": "771:3:2" - } - ], - "id": 41, - "name": "BinaryOperation", - "src": "768:6:2" - }, - { - "attributes": { - "hexvalue": "31", - "subdenomination": null, - "token": null, - "type": "int_const 1", - "value": "1" - }, - "id": 42, - "name": "Literal", - "src": "777:1:2" - } - ], - "id": 43, - "name": "BinaryOperation", - "src": "768:10:2" - } - ], - "id": 44, - "name": "VariableDeclaration", - "src": "743:35:2" - }, - { - "attributes": { - "constant": false, - "name": "transferFrom", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 45, - "name": "ElementaryTypeName", - "src": "1088:7:2" - } - ], - "id": 46, - "name": "VariableDeclaration", - "src": "1088:13:2" - }, - { - "attributes": { - "constant": false, - "name": "_to", - "storageLocation": "default", - "type": "address", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address" - }, - "id": 47, - "name": "ElementaryTypeName", - "src": "1103:7:2" - } - ], - "id": 48, - "name": "VariableDeclaration", - "src": "1103:11:2" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 49, - "name": "ElementaryTypeName", - "src": "1116:4:2" - } - ], - "id": 50, - "name": "VariableDeclaration", - "src": "1116:11:2" - } - ], - "id": 51, - "name": "ParameterList", - "src": "1087:41:2" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "storageLocation": "default", - "type": "bool", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool" - }, - "id": 52, - "name": "ElementaryTypeName", - "src": "1161:4:2" - } - ], - "id": 53, - "name": "VariableDeclaration", - "src": "1161:4:2" - } - ], - "id": 54, - "name": "ParameterList", - "src": "1160:6:2" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "allowance", - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 55, - "name": "ElementaryTypeName", - "src": "1181:4:2" - } - ], - "id": 56, - "name": "VariableDeclaration", - "src": "1181:14:2" - }, - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": "allowed" - }, - "id": 57, - "name": "Identifier", - "src": "1198:7:2" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 58, - "name": "Identifier", - "src": "1206:5:2" - } - ], - "id": 59, - "name": "IndexAccess", - "src": "1198:14:2" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 60, - "name": "Identifier", - "src": "1213:3:2" - } - ], - "id": 61, - "name": "MemberAccess", - "src": "1213:10:2" - } - ], - "id": 62, - "name": "IndexAccess", - "src": "1198:26:2" - } - ], - "id": 63, - "name": "VariableDeclarationStatement", - "src": "1181:43:2" - }, - { - "children": [ - { - "attributes": { - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 64, - "name": "Identifier", - "src": "1238:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 65, - "name": "Identifier", - "src": "1247:5:2" - } - ], - "id": 66, - "name": "IndexAccess", - "src": "1238:15:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 67, - "name": "Identifier", - "src": "1257:6:2" - } - ], - "id": 68, - "name": "BinaryOperation", - "src": "1238:25:2" - }, - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256", - "value": "allowance" - }, - "id": 69, - "name": "Identifier", - "src": "1279:9:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 70, - "name": "Identifier", - "src": "1292:6:2" - } - ], - "id": 71, - "name": "BinaryOperation", - "src": "1279:19:2" - } - ], - "id": 72, - "name": "BinaryOperation", - "src": "1238:60:2" - }, - { - "attributes": { - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 73, - "name": "Identifier", - "src": "1314:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 74, - "name": "Identifier", - "src": "1323:3:2" - } - ], - "id": 75, - "name": "IndexAccess", - "src": "1314:13:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 76, - "name": "Identifier", - "src": "1330:6:2" - } - ], - "id": 77, - "name": "BinaryOperation", - "src": "1314:22:2" - }, - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 78, - "name": "Identifier", - "src": "1340:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 79, - "name": "Identifier", - "src": "1349:3:2" - } - ], - "id": 80, - "name": "IndexAccess", - "src": "1340:13:2" - } - ], - "id": 81, - "name": "BinaryOperation", - "src": "1314:39:2" - } - ], - "id": 82, - "name": "BinaryOperation", - "src": "1238:115:2" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "+=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 83, - "name": "Identifier", - "src": "1378:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 84, - "name": "Identifier", - "src": "1387:3:2" - } - ], - "id": 85, - "name": "IndexAccess", - "src": "1378:13:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 86, - "name": "Identifier", - "src": "1395:6:2" - } - ], - "id": 87, - "name": "Assignment", - "src": "1378:23:2" - } - ], - "id": 88, - "name": "ExpressionStatement", - "src": "1378:23:2" - }, - { - "children": [ - { - "attributes": { - "operator": "-=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)", - "value": "balances" - }, - "id": 89, - "name": "Identifier", - "src": "1415:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 90, - "name": "Identifier", - "src": "1424:5:2" - } - ], - "id": 91, - "name": "IndexAccess", - "src": "1415:15:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 92, - "name": "Identifier", - "src": "1434:6:2" - } - ], - "id": 93, - "name": "Assignment", - "src": "1415:25:2" - } - ], - "id": 94, - "name": "ExpressionStatement", - "src": "1415:25:2" - }, - { - "children": [ - { - "attributes": { - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "type": "uint256", - "value": "allowance" - }, - "id": 95, - "name": "Identifier", - "src": "1458:9:2" - }, - { - "attributes": { - "type": "uint256", - "value": "MAX_UINT" - }, - "id": 96, - "name": "Identifier", - "src": "1470:8:2" - } - ], - "id": 97, - "name": "BinaryOperation", - "src": "1458:20:2" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "-=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "type": - "mapping(address => mapping(address => uint256))", - "value": - "allowed" - }, - "id": 98, - "name": - "Identifier", - "src": - "1498:7:2" - }, - { - "attributes": { - "type": - "address", - "value": - "_from" - }, - "id": 99, - "name": - "Identifier", - "src": - "1506:5:2" - } - ], - "id": 102, - "name": - "IndexAccess", - "src": - "1498:14:2" - }, - { - "attributes": { - "member_name": - "sender", - "type": - "address" - }, - "children": [ - { - "attributes": { - "type": - "msg", - "value": - "msg" - }, - "id": 100, - "name": - "Identifier", - "src": - "1513:3:2" - } - ], - "id": 101, - "name": - "MemberAccess", - "src": - "1513:10:2" - } - ], - "id": 103, - "name": "IndexAccess", - "src": "1498:26:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 104, - "name": "Identifier", - "src": "1528:6:2" - } - ], - "id": 105, - "name": "Assignment", - "src": "1498:36:2" - } - ], - "id": 106, - "name": "ExpressionStatement", - "src": "1498:36:2" - } - ], - "id": 107, - "name": "Block", - "src": "1480:69:2" - } - ], - "id": 108, - "name": "IfStatement", - "src": "1454:95:2" - }, - { - "children": [ - { - "attributes": { - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "type": - "function (address,address,uint256) constant", - "value": "Transfer" - }, - "id": 109, - "name": "Identifier", - "src": "1562:8:2" - }, - { - "attributes": { - "type": "address", - "value": "_from" - }, - "id": 110, - "name": "Identifier", - "src": "1571:5:2" - }, - { - "attributes": { - "type": "address", - "value": "_to" - }, - "id": 111, - "name": "Identifier", - "src": "1578:3:2" - }, - { - "attributes": { - "type": "uint256", - "value": "_value" - }, - "id": 112, - "name": "Identifier", - "src": "1583:6:2" - } - ], - "id": 113, - "name": "FunctionCall", - "src": "1562:28:2" - } - ], - "id": 114, - "name": "ExpressionStatement", - "src": "1562:28:2" - }, - { - "children": [ - { - "attributes": { - "hexvalue": "74727565", - "subdenomination": null, - "token": "true", - "type": "bool", - "value": "true" - }, - "id": 115, - "name": "Literal", - "src": "1611:4:2" - } - ], - "id": 116, - "name": "Return", - "src": "1604:11:2" - } - ], - "id": 117, - "name": "Block", - "src": "1364:262:2" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "hexvalue": "66616c7365", - "subdenomination": null, - "token": "false", - "type": "bool", - "value": "false" - }, - "id": 118, - "name": "Literal", - "src": "1653:5:2" - } - ], - "id": 119, - "name": "Return", - "src": "1646:12:2" - } - ], - "id": 120, - "name": "Block", - "src": "1632:37:2" - } - ], - "id": 121, - "name": "IfStatement", - "src": "1234:435:2" - } - ], - "id": 122, - "name": "Block", - "src": "1171:504:2" - } - ], - "id": 123, - "name": "FunctionDefinition", - "src": "1066:609:2" - } - ], - "id": 124, - "name": "ContractDefinition", - "src": "686:991:2" - } - ], - "name": "SourceUnit" - } - }, - "2.0.0/tokens/ZRXToken/ZRXToken.sol": { - "id": 3, - "legacyAST": { - "children": [ - { - "attributes": { - "literals": ["solidity", "0.4", ".11"] - }, - "id": 1, - "name": "PragmaDirective", - "src": "580:23:3" - }, - { - "attributes": { - "file": "../../../1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol" - }, - "id": 3, - "name": "ImportDirective", - "src": "650:142:3" - }, - { - "attributes": { - "fullyImplemented": true, - "isLibrary": false, - "linearizedBaseContracts": [31, 124, 322, 397], - "name": "ZRXToken" - }, - "children": [ - { - "children": [ - { - "attributes": { - "name": "UnlimitedAllowanceToken" - }, - "id": 4, - "name": "UserDefinedTypeName", - "src": "816:23:3" - } - ], - "id": 5, - "name": "InheritanceSpecifier", - "src": "816:23:3" - }, - { - "attributes": { - "constant": true, - "name": "decimals", - "storageLocation": "default", - "type": "uint8", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint8" - }, - "id": 6, - "name": "ElementaryTypeName", - "src": "891:5:3" - }, - { - "attributes": { - "hexvalue": "3138", - "subdenomination": null, - "token": null, - "type": "int_const 18", - "value": "18" - }, - "id": 7, - "name": "Literal", - "src": "924:2:3" - } - ], - "id": 8, - "name": "VariableDeclaration", - "src": "891:35:3" - }, - { - "attributes": { - "constant": false, - "name": "totalSupply", - "storageLocation": "default", - "type": "uint256", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint" - }, - "id": 9, - "name": "ElementaryTypeName", - "src": "932:4:3" - }, - { - "attributes": { - "operator": "**", - "type": "int_const 1000000000000000000000000000" - }, - "children": [ - { - "attributes": { - "hexvalue": "3130", - "subdenomination": null, - "token": null, - "type": "int_const 10", - "value": "10" - }, - "id": 10, - "name": "Literal", - "src": "958:2:3" - }, - { - "attributes": { - "hexvalue": "3237", - "subdenomination": null, - "token": null, - "type": "int_const 27", - "value": "27" - }, - "id": 11, - "name": "Literal", - "src": "962:2:3" - } - ], - "id": 12, - "name": "BinaryOperation", - "src": "958:6:3" - } - ], - "id": 13, - "name": "VariableDeclaration", - "src": "932:32:3" - }, - { - "attributes": { - "constant": true, - "name": "name", - "storageLocation": "default", - "type": "string memory", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "string" - }, - "id": 14, - "name": "ElementaryTypeName", - "src": "1009:6:3" - }, - { - "attributes": { - "hexvalue": "30782050726f746f636f6c20546f6b656e", - "subdenomination": null, - "token": null, - "type": "literal_string \"0x Protocol Token\"", - "value": "0x Protocol Token" - }, - "id": 15, - "name": "Literal", - "src": "1039:19:3" - } - ], - "id": 16, - "name": "VariableDeclaration", - "src": "1009:49:3" - }, - { - "attributes": { - "constant": true, - "name": "symbol", - "storageLocation": "default", - "type": "string memory", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "string" - }, - "id": 17, - "name": "ElementaryTypeName", - "src": "1064:6:3" - }, - { - "attributes": { - "hexvalue": "5a5258", - "subdenomination": null, - "token": null, - "type": "literal_string \"ZRX\"", - "value": "ZRX" - }, - "id": 18, - "name": "Literal", - "src": "1096:5:3" - } - ], - "id": 19, - "name": "VariableDeclaration", - "src": "1064:37:3" - }, - { - "attributes": { - "constant": false, - "name": "ZRXToken", - "payable": false, - "visibility": "public" - }, - "children": [ - { - "children": [], - "id": 20, - "name": "ParameterList", - "src": "1167:2:3" - }, - { - "children": [], - "id": 21, - "name": "ParameterList", - "src": "1189:0:3" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "uint256" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)", - "value": "balances" - }, - "id": 22, - "name": "Identifier", - "src": "1199:8:3" - }, - { - "attributes": { - "member_name": "sender", - "type": "address" - }, - "children": [ - { - "attributes": { - "type": "msg", - "value": "msg" - }, - "id": 23, - "name": "Identifier", - "src": "1208:3:3" - } - ], - "id": 24, - "name": "MemberAccess", - "src": "1208:10:3" - } - ], - "id": 25, - "name": "IndexAccess", - "src": "1199:20:3" - }, - { - "attributes": { - "type": "uint256", - "value": "totalSupply" - }, - "id": 26, - "name": "Identifier", - "src": "1222:11:3" - } - ], - "id": 27, - "name": "Assignment", - "src": "1199:34:3" - } - ], - "id": 28, - "name": "ExpressionStatement", - "src": "1199:34:3" - } - ], - "id": 29, - "name": "Block", - "src": "1189:51:3" - } - ], - "id": 30, - "name": "FunctionDefinition", - "src": "1150:90:3" - } - ], - "id": 31, - "name": "ContractDefinition", - "src": "795:447:3" - } - ], - "name": "SourceUnit" - } - } - }, - "sourceCodes": { - "1.0.0/ERC20Token/ERC20Token_v1.sol": - "pragma solidity ^0.4.11;\n\nimport { Token_v1 as Token } from \"../Token/Token_v1.sol\";\n\ncontract ERC20Token_v1 is Token {\n\n function transfer(address _to, uint _value) returns (bool) {\n //Default assumes totalSupply can't be over max (2^256 - 1).\n if (balances[msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {\n balances[msg.sender] -= _value;\n balances[_to] += _value;\n Transfer(msg.sender, _to, _value);\n return true;\n } else { return false; }\n }\n\n function transferFrom(address _from, address _to, uint _value) returns (bool) {\n if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {\n balances[_to] += _value;\n balances[_from] -= _value;\n allowed[_from][msg.sender] -= _value;\n Transfer(_from, _to, _value);\n return true;\n } else { return false; }\n }\n\n function balanceOf(address _owner) constant returns (uint) {\n return balances[_owner];\n }\n\n function approve(address _spender, uint _value) returns (bool) {\n allowed[msg.sender][_spender] = _value;\n Approval(msg.sender, _spender, _value);\n return true;\n }\n\n function allowance(address _owner, address _spender) constant returns (uint) {\n return allowed[_owner][_spender];\n }\n\n mapping (address => uint) balances;\n mapping (address => mapping (address => uint)) allowed;\n uint public totalSupply;\n}\n", - "1.0.0/Token/Token_v1.sol": - "pragma solidity ^0.4.11;\n\ncontract Token_v1 {\n\n /// @return total amount of tokens\n function totalSupply() constant returns (uint supply) {}\n\n /// @param _owner The address from which the balance will be retrieved\n /// @return The balance\n function balanceOf(address _owner) constant returns (uint balance) {}\n\n /// @notice send `_value` token to `_to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transfer(address _to, uint _value) returns (bool success) {}\n\n /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transferFrom(address _from, address _to, uint _value) returns (bool success) {}\n\n /// @notice `msg.sender` approves `_addr` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of wei to be approved for transfer\n /// @return Whether the approval was successful or not\n function approve(address _spender, uint _value) returns (bool success) {}\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender) constant returns (uint remaining) {}\n\n event Transfer(address indexed _from, address indexed _to, uint _value);\n event Approval(address indexed _owner, address indexed _spender, uint _value);\n}\n\n", - "1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol": - "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.11;\n\nimport { ERC20Token_v1 as ERC20Token } from \"../ERC20Token/ERC20Token_v1.sol\";\n\ncontract UnlimitedAllowanceToken_v1 is ERC20Token {\n\n uint constant MAX_UINT = 2**256 - 1;\n\n /// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.\n /// @param _from Address to transfer from.\n /// @param _to Address to transfer to.\n /// @param _value Amount to transfer.\n /// @return Success of transfer.\n function transferFrom(address _from, address _to, uint _value)\n public\n returns (bool)\n {\n uint allowance = allowed[_from][msg.sender];\n if (balances[_from] >= _value\n && allowance >= _value\n && balances[_to] + _value >= balances[_to]\n ) {\n balances[_to] += _value;\n balances[_from] -= _value;\n if (allowance < MAX_UINT) {\n allowed[_from][msg.sender] -= _value;\n }\n Transfer(_from, _to, _value);\n return true;\n } else {\n return false;\n }\n }\n}\n", - "2.0.0/tokens/ZRXToken/ZRXToken.sol": - "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.11;\n\n// solhint-disable-next-line max-line-length\nimport { UnlimitedAllowanceToken_v1 as UnlimitedAllowanceToken } from \"../../../1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\";\n\n\ncontract ZRXToken is UnlimitedAllowanceToken {\n\n // solhint-disable const-name-snakecase\n uint8 constant public decimals = 18;\n uint public totalSupply = 10**27; // 1 billion tokens, 18 decimal places\n string constant public name = \"0x Protocol Token\";\n string constant public symbol = \"ZRX\";\n // solhint-enableconst-name-snakecase\n\n function ZRXToken()\n public\n {\n balances[msg.sender] = totalSupply;\n }\n}\n" - }, - "sourceTreeHashHex": "0xbcce67d129fe53ddb9717b4f567b33108c41a4f4324aa47ac609037e41f5b95d", - "compiler": { - "name": "solc", - "version": "soljson-v0.4.11+commit.68ef5810.js", - "settings": { - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode.object", - "evm.bytecode.sourceMap", - "evm.deployedBytecode.object", - "evm.deployedBytecode.sourceMap" - ] - } - } - } - }, - "networks": { - "50": { - "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c", - "links": {}, - "constructorArgs": "[]" - } - } -} + "schemaVersion": "2.0.0", + "contractName": "ZRXToken", + "compilerOutput": { + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "inputs": [], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "devdoc": { + "methods": { + "transferFrom(address,address,uint256)": { + "details": "ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.", + "params": { + "_from": "Address to transfer from.", + "_to": "Address to transfer to.", + "_value": "Amount to transfer." + }, + "return": "Success of transfer." + } + } + }, + "evm": { + "assembly": " /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\n mstore(0x40, 0x60)\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":958:964 10**27 */\n 0x33b2e3c9fd0803ce8000000\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n 0x3\n sstore\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1150:1240 function ZRXToken()... */\n jumpi(tag_1, iszero(callvalue))\n invalid\ntag_1:\ntag_2:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1222:1233 totalSupply */\n sload(0x3)\n sub(exp(0x2, 0xa0), 0x1)\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1208:1218 msg.sender */\n caller\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1219 balances[msg.sender] */\n and\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1207 balances */\n 0x0\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1219 balances[msg.sender] */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1199:1233 balances[msg.sender] = totalSupply */\n sstore\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1150:1240 function ZRXToken()... */\ntag_3:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\ntag_4:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x0\n codecopy\n 0x0\n return\nstop\n\nsub_0: assembly {\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":795:1242 contract ZRXToken is UnlimitedAllowanceToken {... */\n mstore(0x40, 0x60)\n jumpi(tag_1, iszero(calldatasize))\n and(div(calldataload(0x0), 0x100000000000000000000000000000000000000000000000000000000), 0xffffffff)\n 0x6fdde03\n dup2\n eq\n tag_2\n jumpi\n dup1\n 0x95ea7b3\n eq\n tag_3\n jumpi\n dup1\n 0x18160ddd\n eq\n tag_4\n jumpi\n dup1\n 0x23b872dd\n eq\n tag_5\n jumpi\n dup1\n 0x313ce567\n eq\n tag_6\n jumpi\n dup1\n 0x70a08231\n eq\n tag_7\n jumpi\n dup1\n 0x95d89b41\n eq\n tag_8\n jumpi\n dup1\n 0xa9059cbb\n eq\n tag_9\n jumpi\n dup1\n 0xdd62ed3e\n eq\n tag_10\n jumpi\n tag_1:\n invalid\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1009:1058 string constant public name = \"0x Protocol Token\" */\n tag_2:\n jumpi(tag_11, iszero(callvalue))\n invalid\n tag_11:\n tag_12\n jump(tag_13)\n tag_12:\n 0x40\n dup1\n mload\n 0x20\n dup1\n dup3\n mstore\n dup4\n mload\n dup2\n dup4\n add\n mstore\n dup4\n mload\n swap2\n swap3\n dup4\n swap3\n swap1\n dup4\n add\n swap2\n dup6\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":18:20 */\n dup3\n iszero\n /* \"--CODEGEN--\":13:16 */\n tag_14\n /* \"--CODEGEN--\":7:12 */\n jumpi\n /* \"--CODEGEN--\":32:37 */\n tag_15:\n /* \"--CODEGEN--\":59:62 */\n dup1\n /* \"--CODEGEN--\":53:58 */\n mload\n /* \"--CODEGEN--\":48:51 */\n dup3\n /* \"--CODEGEN--\":41:47 */\n mstore\n /* \"--CODEGEN--\":93:95 */\n 0x20\n /* \"--CODEGEN--\":88:91 */\n dup4\n /* \"--CODEGEN--\":85:87 */\n gt\n /* \"--CODEGEN--\":78:84 */\n iszero\n /* \"--CODEGEN--\":73:76 */\n tag_14\n /* \"--CODEGEN--\":67:72 */\n jumpi\n /* \"--CODEGEN--\":152:155 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n swap1\n swap3\n add\n swap2\n /* \"--CODEGEN--\":117:119 */\n 0x20\n /* \"--CODEGEN--\":108:111 */\n swap2\n dup3\n add\n swap2\n /* \"--CODEGEN--\":130:133 */\n add\n /* \"--CODEGEN--\":172:177 */\n tag_15\n /* \"--CODEGEN--\":167:171 */\n jump\n /* \"--CODEGEN--\":181:184 */\n tag_14:\n /* \"--CODEGEN--\":3:189 */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_16\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_16:\n pop\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_3:\n jumpi(tag_17, iszero(callvalue))\n invalid\n tag_17:\n tag_18\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n calldataload(0x24)\n jump(tag_19)\n tag_18:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n tag_4:\n jumpi(tag_20, iszero(callvalue))\n invalid\n tag_20:\n tag_21\n jump(tag_22)\n tag_21:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_5:\n jumpi(tag_23, iszero(callvalue))\n invalid\n tag_23:\n tag_18\n 0xffffffffffffffffffffffffffffffffffffffff\n calldataload(0x4)\n dup2\n and\n swap1\n calldataload(0x24)\n and\n calldataload(0x44)\n jump(tag_25)\n tag_24:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n tag_6:\n jumpi(tag_26, iszero(callvalue))\n invalid\n tag_26:\n tag_27\n jump(tag_28)\n tag_27:\n 0x40\n dup1\n mload\n 0xff\n swap1\n swap3\n and\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_7:\n jumpi(tag_29, iszero(callvalue))\n invalid\n tag_29:\n tag_21\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n jump(tag_31)\n tag_30:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1064:1101 string constant public symbol = \"ZRX\" */\n tag_8:\n jumpi(tag_32, iszero(callvalue))\n invalid\n tag_32:\n tag_12\n jump(tag_34)\n tag_33:\n 0x40\n dup1\n mload\n 0x20\n dup1\n dup3\n mstore\n dup4\n mload\n dup2\n dup4\n add\n mstore\n dup4\n mload\n swap2\n swap3\n dup4\n swap3\n swap1\n dup4\n add\n swap2\n dup6\n add\n swap1\n dup1\n dup4\n dup4\n /* \"--CODEGEN--\":18:20 */\n dup3\n iszero\n /* \"--CODEGEN--\":13:16 */\n tag_14\n /* \"--CODEGEN--\":7:12 */\n jumpi\n /* \"--CODEGEN--\":32:37 */\n tag_36:\n /* \"--CODEGEN--\":59:62 */\n dup1\n /* \"--CODEGEN--\":53:58 */\n mload\n /* \"--CODEGEN--\":48:51 */\n dup3\n /* \"--CODEGEN--\":41:47 */\n mstore\n /* \"--CODEGEN--\":93:95 */\n 0x20\n /* \"--CODEGEN--\":88:91 */\n dup4\n /* \"--CODEGEN--\":85:87 */\n gt\n /* \"--CODEGEN--\":78:84 */\n iszero\n /* \"--CODEGEN--\":73:76 */\n tag_14\n /* \"--CODEGEN--\":67:72 */\n jumpi\n /* \"--CODEGEN--\":152:155 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n swap1\n swap3\n add\n swap2\n /* \"--CODEGEN--\":117:119 */\n 0x20\n /* \"--CODEGEN--\":108:111 */\n swap2\n dup3\n add\n swap2\n /* \"--CODEGEN--\":130:133 */\n add\n /* \"--CODEGEN--\":172:177 */\n tag_15\n /* \"--CODEGEN--\":167:171 */\n jump\n /* \"--CODEGEN--\":181:184 */\n tag_35:\n /* \"--CODEGEN--\":3:189 */\n pop\n pop\n pop\n swap1\n pop\n swap1\n dup2\n add\n swap1\n 0x1f\n and\n dup1\n iszero\n tag_16\n jumpi\n dup1\n dup3\n sub\n dup1\n mload\n 0x1\n dup4\n 0x20\n sub\n 0x100\n exp\n sub\n not\n and\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n tag_37:\n pop\n swap3\n pop\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_9:\n jumpi(tag_38, iszero(callvalue))\n invalid\n tag_38:\n tag_18\n and(calldataload(0x4), 0xffffffffffffffffffffffffffffffffffffffff)\n calldataload(0x24)\n jump(tag_40)\n tag_39:\n 0x40\n dup1\n mload\n swap2\n iszero\n iszero\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_10:\n jumpi(tag_41, iszero(callvalue))\n invalid\n tag_41:\n tag_21\n 0xffffffffffffffffffffffffffffffffffffffff\n calldataload(0x4)\n dup2\n and\n swap1\n calldataload(0x24)\n and\n jump(tag_43)\n tag_42:\n 0x40\n dup1\n mload\n swap2\n dup3\n mstore\n mload\n swap1\n dup2\n swap1\n sub\n 0x20\n add\n swap1\n return\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1009:1058 string constant public name = \"0x Protocol Token\" */\n tag_13:\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x11\n dup2\n mstore\n 0x30782050726f746f636f6c20546f6b656e000000000000000000000000000000\n 0x20\n dup3\n add\n mstore\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_19:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1168:1178 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1144:1148 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n dup2\n dup2\n mstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1167 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1189 */\n swap5\n dup8\n and\n dup1\n dup5\n mstore\n swap5\n dup3\n mstore\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1198 */\n dup7\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1208:1246 */\n dup1\n mload\n dup7\n dup2\n mstore\n swap1\n mload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1144:1148 */\n swap3\n swap5\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1189 */\n swap4\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1160:1179 */\n swap3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1208:1246 */\n 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925\n swap3\n swap2\n dup2\n swap1\n sub\n swap1\n swap2\n add\n swap1\n log3\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1263:1267 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1087:1274 */\n tag_44:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":932:964 uint public totalSupply = 10**27 */\n tag_22:\n sload(0x3)\n dup2\n jump\t// out\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_25:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup5\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1161:1165 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n dup2\n dup2\n mstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1205 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1212 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1213:1223 */\n caller\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1198:1224 */\n swap1\n swap6\n and\n dup4\n mstore\n swap4\n dup2\n mstore\n dup4\n dup3\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1253 */\n swap3\n dup3\n mstore\n dup2\n swap1\n mstore\n swap2\n dup3\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1263 */\n dup4\n swap1\n lt\n dup1\n iszero\n swap1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1298 */\n tag_46\n jumpi\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1292:1298 */\n dup3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1279:1288 */\n dup2\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1279:1298 */\n lt\n iszero\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1298 */\n tag_46:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1353 */\n dup1\n iszero\n tag_47\n jumpi\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1353 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup5\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1348 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1340:1353 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1314:1336 */\n dup4\n dup2\n add\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1314:1353 */\n lt\n iszero\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1238:1353 */\n tag_47:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n iszero\n tag_48\n jumpi\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1391 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup6\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1386 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1391 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n dup1\n dup3\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1378:1401 */\n dup1\n sload\n dup8\n add\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1415:1430 */\n swap2\n dup8\n and\n dup2\n mstore\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1415:1440 */\n dup1\n sload\n dup5\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":768:778 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1458:1478 */\n dup2\n lt\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1454:1549 */\n iszero\n tag_49\n jumpi\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1512 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup7\n and\n 0x0\n swap1\n dup2\n mstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1505 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1512 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1513:1523 */\n caller\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1524 */\n swap1\n swap5\n and\n dup4\n mstore\n swap3\n swap1\n mstore\n sha3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1498:1534 */\n dup1\n sload\n dup5\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1454:1549 */\n tag_49:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1578:1581 */\n dup4\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1571:1576 */\n dup6\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1583:1589 */\n dup6\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1562:1590 */\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n log3\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1611:1615 */\n 0x1\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1604:1615 */\n swap2\n pop\n jump(tag_50)\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n tag_48:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1653:1658 */\n 0x0\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1646:1658 */\n swap2\n pop\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1234:1669 */\n tag_50:\n /* \"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":1066:1675 */\n tag_45:\n pop\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n tag_28:\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":924:926 18 */\n 0x12\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":891:926 uint8 constant public decimals = 18 */\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_31:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1058:1074 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1035:1039 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1058:1074 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":982:1081 */\n tag_51:\n swap2\n swap1\n pop\n jump\t// out\n /* \"2.0.0/tokens/ZRXToken/ZRXToken.sol\":1064:1101 string constant public symbol = \"ZRX\" */\n tag_34:\n 0x40\n dup1\n mload\n dup1\n dup3\n add\n swap1\n swap2\n mstore\n 0x3\n dup2\n mstore\n 0x5a52580000000000000000000000000000000000000000000000000000000000\n 0x20\n dup3\n add\n mstore\n dup2\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_40:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":276:286 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":178:182 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:287 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n dup2\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:297 */\n dup3\n swap1\n lt\n dup1\n iszero\n swap1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:340 */\n tag_53\n jumpi\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:340 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup4\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:335 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":327:340 */\n swap1\n dup2\n mstore\n 0x20\n dup2\n swap1\n mstore\n 0x40\n swap1\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":301:323 */\n dup3\n dup2\n add\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":301:340 */\n lt\n iszero\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":267:340 */\n tag_53:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n iszero\n tag_54\n jumpi\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":365:375 */\n caller\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n dup2\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:364 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:376 */\n dup2\n dup2\n mstore\n 0x20\n dup2\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":356:386 */\n dup1\n sload\n dup9\n swap1\n sub\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:413 */\n swap4\n dup8\n and\n dup1\n dup4\n mstore\n swap2\n dup5\n swap1\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:423 */\n dup1\n sload\n dup8\n add\n swap1\n sstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":437:470 */\n dup4\n mload\n dup7\n dup2\n mstore\n swap4\n mload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":400:413 */\n swap2\n swap4\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":437:470 */\n 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\n swap3\n swap1\n dup2\n swap1\n sub\n swap1\n swap2\n add\n swap1\n log3\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":491:495 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":484:495 */\n jump(tag_44)\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n tag_54:\n pop\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":521:526 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":514:526 */\n jump(tag_44)\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":263:529 */\n tag_55:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":125:535 */\n tag_52:\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_43:\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n 0xffffffffffffffffffffffffffffffffffffffff\n dup1\n dup4\n and\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1351:1355 */\n 0x0\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n swap1\n dup2\n mstore\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1381 */\n 0x1\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1389 */\n 0x20\n swap1\n dup2\n mstore\n 0x40\n dup1\n dup4\n sha3\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1374:1399 */\n swap4\n dup6\n and\n dup4\n mstore\n swap3\n swap1\n mstore\n sha3\n sload\n /* \"1.0.0/ERC20Token/ERC20Token_v1.sol\":1280:1406 */\n tag_56:\n swap3\n swap2\n pop\n pop\n jump\t// out\n}\n", + "bytecode": { + "linkReferences": {}, + "object": "0x60606040526b033b2e3c9fd0803ce8000000600355341561001c57fe5b5b600354600160a060020a0333166000908152602081905260409020555b5b61078d8061004a6000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a723058208999c5329f53064aac58d4b553cb379a45bfca17e024506ff916637cfc36f7b20029", + "opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH12 0x33B2E3C9FD0803CE8000000 PUSH1 0x3 SSTORE CALLVALUE ISZERO PUSH2 0x1C JUMPI INVALID JUMPDEST JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0xA0 PUSH1 0x2 EXP SUB CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SSTORE JUMPDEST JUMPDEST PUSH2 0x78D DUP1 PUSH2 0x4A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x96 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x33D JUMPI JUMPDEST INVALID JUMPDEST CALLVALUE ISZERO PUSH2 0xA0 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x14E JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1B0 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1F6 JUMPI INVALID JUMPDEST PUSH2 0x1FE PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x257 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x305 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x345 JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x727 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH32 0x30782050726F746F636F6C20546F6B656E000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE DUP1 DUP4 SHA3 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP5 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 SHA3 SLOAD SWAP3 DUP3 MSTORE DUP2 SWAP1 MSTORE SWAP2 DUP3 SHA3 SLOAD DUP4 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x483 JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4B6 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP4 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x5C6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x558 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x5A52580000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 SHA3 SLOAD DUP3 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x699 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP3 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x427 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x427 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 SHA3 DUP10 SWAP10 0xc5 ORIGIN SWAP16 MSTORE8 MOD 0x4a 0xac PC 0xd4 0xb5 MSTORE8 0xcb CALLDATACOPY SWAP11 GASLIMIT 0xbf 0xca OR 0xe0 0x24 POP PUSH16 0xF916637CFC36F7B20029000000000000 ", + "sourceMap": "795:447:3:-;;;958:6;932:32;;1150:90;;;;;;;1222:11;;-1:-1:-1;;;;;1208:10:3;1199:20;:8;:20;;;;;;;;;;:34;1150:90;795:447;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "0x606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610098578063095ea7b31461014657806318160ddd1461018657806323b872dd146101a8578063313ce567146101ee57806370a082311461021457806395d89b411461024f578063a9059cbb146102fd578063dd62ed3e1461033d575bfe5b34156100a057fe5b6100a861037e565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561014e57fe5b61017273ffffffffffffffffffffffffffffffffffffffff600435166024356103b5565b604080519115158252519081900360200190f35b341561018e57fe5b61019661042d565b60408051918252519081900360200190f35b34156101b057fe5b61017273ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610433565b604080519115158252519081900360200190f35b34156101f657fe5b6101fe6105d4565b6040805160ff9092168252519081900360200190f35b341561021c57fe5b61019673ffffffffffffffffffffffffffffffffffffffff600435166105d9565b60408051918252519081900360200190f35b341561025757fe5b6100a8610605565b60408051602080825283518183015283519192839290830191850190808383821561010c575b80518252602083111561010c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016100ce565b505050905090810190601f1680156101385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561030557fe5b61017273ffffffffffffffffffffffffffffffffffffffff6004351660243561063c565b604080519115158252519081900360200190f35b341561034557fe5b61019673ffffffffffffffffffffffffffffffffffffffff60043581169060243516610727565b60408051918252519081900360200190f35b60408051808201909152601181527f30782050726f746f636f6c20546f6b656e000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832033909516835293815283822054928252819052918220548390108015906104835750828110155b80156104b6575073ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090205483810110155b156105c65773ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220805487019055918716815220805484900390557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156105585773ffffffffffffffffffffffffffffffffffffffff808616600090815260016020908152604080832033909416835292905220805484900390555b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191506105cb565b600091505b5b509392505050565b601281565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020545b919050565b60408051808201909152600381527f5a52580000000000000000000000000000000000000000000000000000000000602082015281565b73ffffffffffffffffffffffffffffffffffffffff3316600090815260208190526040812054829010801590610699575073ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205482810110155b156107185773ffffffffffffffffffffffffffffffffffffffff33811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3506001610427565b506000610427565b5b92915050565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160209081526040808320938516835292905220545b929150505600a165627a7a723058208999c5329f53064aac58d4b553cb379a45bfca17e024506ff916637cfc36f7b20029", + "opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x96 JUMPI PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 CALLDATALOAD DIV AND PUSH4 0x6FDDE03 DUP2 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x186 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x33D JUMPI JUMPDEST INVALID JUMPDEST CALLVALUE ISZERO PUSH2 0xA0 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x14E JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x18E JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH2 0x42D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1B0 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH1 0x44 CALLDATALOAD PUSH2 0x433 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1F6 JUMPI INVALID JUMPDEST PUSH2 0x1FE PUSH2 0x5D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x21C JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH2 0x5D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x257 JUMPI INVALID JUMPDEST PUSH2 0xA8 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 DUP3 ISZERO PUSH2 0x10C JUMPI JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 GT ISZERO PUSH2 0x10C JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xCE JUMP JUMPDEST POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x138 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x305 JUMPI INVALID JUMPDEST PUSH2 0x172 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD AND PUSH1 0x24 CALLDATALOAD PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x345 JUMPI INVALID JUMPDEST PUSH2 0x196 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x4 CALLDATALOAD DUP2 AND SWAP1 PUSH1 0x24 CALLDATALOAD AND PUSH2 0x727 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x11 DUP2 MSTORE PUSH32 0x30782050726F746F636F6C20546F6B656E000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE DUP1 DUP4 SHA3 DUP7 SWAP1 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP5 SWAP4 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP6 AND DUP4 MSTORE SWAP4 DUP2 MSTORE DUP4 DUP3 SHA3 SLOAD SWAP3 DUP3 MSTORE DUP2 SWAP1 MSTORE SWAP2 DUP3 SHA3 SLOAD DUP4 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x483 JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x4B6 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP4 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x5C6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP2 DUP8 AND DUP2 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT ISZERO PUSH2 0x558 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 CALLER SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP2 POP PUSH2 0x5CB JUMP JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x5A52580000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 SHA3 SLOAD DUP3 SWAP1 LT DUP1 ISZERO SWAP1 PUSH2 0x699 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SHA3 SLOAD DUP3 DUP2 ADD LT ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CALLER DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 SHA3 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 PUSH2 0x427 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x427 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 SHA3 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE SHA3 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 SHA3 DUP10 SWAP10 0xc5 ORIGIN SWAP16 MSTORE8 MOD 0x4a 0xac PC 0xd4 0xb5 MSTORE8 0xcb CALLDATACOPY SWAP11 GASLIMIT 0xbf 0xca OR 0xe0 0x24 POP PUSH16 0xF916637CFC36F7B20029000000000000 ", + "sourceMap": "795:447:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18:2:-1;;13:3;7:5;32;59:3;53:5;48:3;41:6;93:2;88:3;85:2;78:6;73:3;67:5;152:3;;;;;117:2;108:3;;;;130;172:5;167:4;181:3;3:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1087:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;932:32:3;;;;;;;;;;;;;;;;;;;;;;;;;;1066:609:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;891:35:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:37:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18:2:-1;;13:3;7:5;32;59:3;53:5;48:3;41:6;93:2;88:3;85:2;78:6;73:3;67:5;152:3;;;;;117:2;108:3;;;;130;172:5;167:4;181:3;3:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;125:410:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:49:3;;;;;;;;;;;;;;;;;;;:::o;1087:187:0:-;1160:19;1168:10;1160:19;;1144:4;1160:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;:38;;;1208;;;;;;;1144:4;;1160:29;:19;1208:38;;;;;;;;;;;-1:-1:-1;1263:4:0;1087:187;;;;;:::o;932:32:3:-;;;;:::o;1066:609:2:-;1198:14;;;;1161:4;1198:14;;;:7;:14;;;;;;;;1213:10;1198:26;;;;;;;;;;;;1238:15;;;;;;;;;;:25;;;;;;:60;;;1292:6;1279:9;:19;;1238:60;:115;;;;-1:-1:-1;1340:13:2;;;:8;:13;;;;;;;;;;;1314:22;;;:39;;1238:115;1234:435;;;1378:13;;;;:8;:13;;;;;;;;;;;:23;;;;;;1415:15;;;;;;:25;;;;;;;768:10;1458:20;;1454:95;;;1498:14;;;;;;;;:7;:14;;;;;;;;1513:10;1498:26;;;;;;;;;:36;;;;;;;1454:95;1578:3;1562:28;;1571:5;1562:28;;;1583:6;1562:28;;;;;;;;;;;;;;;;;;1611:4;1604:11;;;;1234:435;1653:5;1646:12;;1234:435;1066:609;;;;;;;:::o;891:35:3:-;924:2;891:35;:::o;982:99:0:-;1058:16;;;1035:4;1058:16;;;;;;;;;;;982:99;;;;:::o;1064:37:3:-;;;;;;;;;;;;;;;;;;;:::o;125:410:0:-;267:20;276:10;267:20;178:4;267:20;;;;;;;;;;;:30;;;;;;:73;;-1:-1:-1;327:13:0;;;:8;:13;;;;;;;;;;;301:22;;;:39;;267:73;263:266;;;356:20;365:10;356:20;;:8;:20;;;;;;;;;;;:30;;;;;;;400:13;;;;;;;;;;:23;;;;;;437:33;;;;;;;400:13;;437:33;;;;;;;;;;;-1:-1:-1;491:4:0;484:11;;263:266;-1:-1:-1;521:5:0;514:12;;263:266;125:410;;;;;:::o;1280:126::-;1374:15;;;;1351:4;1374:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;1280:126;;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "386600", + "executionCost": "40780", + "totalCost": "427380" + }, + "external": { + "allowance(address,address)": "737", + "approve(address,uint256)": "22218", + "balanceOf(address)": "579", + "decimals()": "270", + "name()": "530", + "symbol()": "662", + "totalSupply()": "417", + "transfer(address,uint256)": "43393", + "transferFrom(address,address,uint256)": "64116" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "60" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "40" + }, + { + "begin": 795, + "end": 1242, + "name": "MSTORE" + }, + { + "begin": 958, + "end": 964, + "name": "PUSH", + "value": "33B2E3C9FD0803CE8000000" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH", + "value": "3" + }, + { + "begin": 932, + "end": 964, + "name": "SSTORE" + }, + { + "begin": 1150, + "end": 1240, + "name": "CALLVALUE" + }, + { + "begin": 1150, + "end": 1240, + "name": "ISZERO" + }, + { + "begin": 1150, + "end": 1240, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 1150, + "end": 1240, + "name": "JUMPI" + }, + { + "begin": 1150, + "end": 1240, + "name": "INVALID" + }, + { + "begin": 1150, + "end": 1240, + "name": "tag", + "value": "1" + }, + { + "begin": 1150, + "end": 1240, + "name": "JUMPDEST" + }, + { + "begin": 1150, + "end": 1240, + "name": "tag", + "value": "2" + }, + { + "begin": 1150, + "end": 1240, + "name": "JUMPDEST" + }, + { + "begin": 1222, + "end": 1233, + "name": "PUSH", + "value": "3" + }, + { + "begin": 1222, + "end": 1233, + "name": "SLOAD" + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "value": "1" + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "value": "A0" + }, + { + "begin": -1, + "end": -1, + "name": "PUSH", + "value": "2" + }, + { + "begin": -1, + "end": -1, + "name": "EXP" + }, + { + "begin": -1, + "end": -1, + "name": "SUB" + }, + { + "begin": 1208, + "end": 1218, + "name": "CALLER" + }, + { + "begin": 1199, + "end": 1219, + "name": "AND" + }, + { + "begin": 1199, + "end": 1207, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1199, + "end": 1219, + "name": "SWAP1" + }, + { + "begin": 1199, + "end": 1219, + "name": "DUP2" + }, + { + "begin": 1199, + "end": 1219, + "name": "MSTORE" + }, + { + "begin": 1199, + "end": 1219, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1199, + "end": 1219, + "name": "DUP2" + }, + { + "begin": 1199, + "end": 1219, + "name": "SWAP1" + }, + { + "begin": 1199, + "end": 1219, + "name": "MSTORE" + }, + { + "begin": 1199, + "end": 1219, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1199, + "end": 1219, + "name": "SWAP1" + }, + { + "begin": 1199, + "end": 1219, + "name": "SHA3" + }, + { + "begin": 1199, + "end": 1233, + "name": "SSTORE" + }, + { + "begin": 1150, + "end": 1240, + "name": "tag", + "value": "3" + }, + { + "begin": 1150, + "end": 1240, + "name": "JUMPDEST" + }, + { + "begin": 795, + "end": 1242, + "name": "tag", + "value": "4" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPDEST" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "0" + }, + { + "begin": 795, + "end": 1242, + "name": "CODECOPY" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "0" + }, + { + "begin": 795, + "end": 1242, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".code": [ + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "60" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "40" + }, + { + "begin": 795, + "end": 1242, + "name": "MSTORE" + }, + { + "begin": 795, + "end": 1242, + "name": "CALLDATASIZE" + }, + { + "begin": 795, + "end": 1242, + "name": "ISZERO" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "0" + }, + { + "begin": 795, + "end": 1242, + "name": "CALLDATALOAD" + }, + { + "begin": 795, + "end": 1242, + "name": "DIV" + }, + { + "begin": 795, + "end": 1242, + "name": "AND" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "6FDDE03" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP2" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "95EA7B3" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "18160DDD" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "23B872DD" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "313CE567" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "70A08231" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "95D89B41" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "A9059CBB" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "DUP1" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH", + "value": "DD62ED3E" + }, + { + "begin": 795, + "end": 1242, + "name": "EQ" + }, + { + "begin": 795, + "end": 1242, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPI" + }, + { + "begin": 795, + "end": 1242, + "name": "tag", + "value": "1" + }, + { + "begin": 795, + "end": 1242, + "name": "JUMPDEST" + }, + { + "begin": 795, + "end": 1242, + "name": "INVALID" + }, + { + "begin": 1009, + "end": 1058, + "name": "tag", + "value": "2" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMPDEST" + }, + { + "begin": 1009, + "end": 1058, + "name": "CALLVALUE" + }, + { + "begin": 1009, + "end": 1058, + "name": "ISZERO" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMPI" + }, + { + "begin": 1009, + "end": 1058, + "name": "INVALID" + }, + { + "begin": 1009, + "end": 1058, + "name": "tag", + "value": "11" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMPDEST" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMP" + }, + { + "begin": 1009, + "end": 1058, + "name": "tag", + "value": "12" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMPDEST" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "MLOAD" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP3" + }, + { + "begin": 1009, + "end": 1058, + "name": "MSTORE" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "MLOAD" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "ADD" + }, + { + "begin": 1009, + "end": 1058, + "name": "MSTORE" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "MLOAD" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP3" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP3" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "ADD" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP6" + }, + { + "begin": 1009, + "end": 1058, + "name": "ADD" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP4" + }, + { + "begin": 18, + "end": 20, + "name": "DUP3" + }, + { + "begin": 18, + "end": 20, + "name": "ISZERO" + }, + { + "begin": 13, + "end": 16, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 7, + "end": 12, + "name": "JUMPI" + }, + { + "begin": 32, + "end": 37, + "name": "tag", + "value": "15" + }, + { + "begin": 32, + "end": 37, + "name": "JUMPDEST" + }, + { + "begin": 59, + "end": 62, + "name": "DUP1" + }, + { + "begin": 53, + "end": 58, + "name": "MLOAD" + }, + { + "begin": 48, + "end": 51, + "name": "DUP3" + }, + { + "begin": 41, + "end": 47, + "name": "MSTORE" + }, + { + "begin": 93, + "end": 95, + "name": "PUSH", + "value": "20" + }, + { + "begin": 88, + "end": 91, + "name": "DUP4" + }, + { + "begin": 85, + "end": 87, + "name": "GT" + }, + { + "begin": 78, + "end": 84, + "name": "ISZERO" + }, + { + "begin": 73, + "end": 76, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 67, + "end": 72, + "name": "JUMPI" + }, + { + "begin": 152, + "end": 155, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP1" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP3" + }, + { + "begin": 152, + "end": 155, + "name": "ADD" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP2" + }, + { + "begin": 117, + "end": 119, + "name": "PUSH", + "value": "20" + }, + { + "begin": 108, + "end": 111, + "name": "SWAP2" + }, + { + "begin": 108, + "end": 111, + "name": "DUP3" + }, + { + "begin": 108, + "end": 111, + "name": "ADD" + }, + { + "begin": 108, + "end": 111, + "name": "SWAP2" + }, + { + "begin": 130, + "end": 133, + "name": "ADD" + }, + { + "begin": 172, + "end": 177, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 167, + "end": 171, + "name": "JUMP" + }, + { + "begin": 181, + "end": 184, + "name": "tag", + "value": "14" + }, + { + "begin": 181, + "end": 184, + "name": "JUMPDEST" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP2" + }, + { + "begin": 3, + "end": 189, + "name": "ADD" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "1F" + }, + { + "begin": 3, + "end": 189, + "name": "AND" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "ISZERO" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 3, + "end": 189, + "name": "JUMPI" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP3" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "MLOAD" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP4" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "20" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "100" + }, + { + "begin": 3, + "end": 189, + "name": "EXP" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "NOT" + }, + { + "begin": 3, + "end": 189, + "name": "AND" + }, + { + "begin": 3, + "end": 189, + "name": "DUP2" + }, + { + "begin": 3, + "end": 189, + "name": "MSTORE" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "20" + }, + { + "begin": 3, + "end": 189, + "name": "ADD" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP2" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "tag", + "value": "16" + }, + { + "begin": 3, + "end": 189, + "name": "JUMPDEST" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP3" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "40" + }, + { + "begin": 3, + "end": 189, + "name": "MLOAD" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP2" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "RETURN" + }, + { + "begin": 1087, + "end": 1274, + "name": "tag", + "value": "3" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPDEST" + }, + { + "begin": 1087, + "end": 1274, + "name": "CALLVALUE" + }, + { + "begin": 1087, + "end": 1274, + "name": "ISZERO" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPI" + }, + { + "begin": 1087, + "end": 1274, + "name": "INVALID" + }, + { + "begin": 1087, + "end": 1274, + "name": "tag", + "value": "17" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPDEST" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1087, + "end": 1274, + "name": "CALLDATALOAD" + }, + { + "begin": 1087, + "end": 1274, + "name": "AND" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH", + "value": "24" + }, + { + "begin": 1087, + "end": 1274, + "name": "CALLDATALOAD" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMP" + }, + { + "begin": 1087, + "end": 1274, + "name": "tag", + "value": "18" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPDEST" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1087, + "end": 1274, + "name": "DUP1" + }, + { + "begin": 1087, + "end": 1274, + "name": "MLOAD" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP2" + }, + { + "begin": 1087, + "end": 1274, + "name": "ISZERO" + }, + { + "begin": 1087, + "end": 1274, + "name": "ISZERO" + }, + { + "begin": 1087, + "end": 1274, + "name": "DUP3" + }, + { + "begin": 1087, + "end": 1274, + "name": "MSTORE" + }, + { + "begin": 1087, + "end": 1274, + "name": "MLOAD" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP1" + }, + { + "begin": 1087, + "end": 1274, + "name": "DUP2" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP1" + }, + { + "begin": 1087, + "end": 1274, + "name": "SUB" + }, + { + "begin": 1087, + "end": 1274, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1087, + "end": 1274, + "name": "ADD" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP1" + }, + { + "begin": 1087, + "end": 1274, + "name": "RETURN" + }, + { + "begin": 932, + "end": 964, + "name": "tag", + "value": "4" + }, + { + "begin": 932, + "end": 964, + "name": "JUMPDEST" + }, + { + "begin": 932, + "end": 964, + "name": "CALLVALUE" + }, + { + "begin": 932, + "end": 964, + "name": "ISZERO" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 932, + "end": 964, + "name": "JUMPI" + }, + { + "begin": 932, + "end": 964, + "name": "INVALID" + }, + { + "begin": 932, + "end": 964, + "name": "tag", + "value": "20" + }, + { + "begin": 932, + "end": 964, + "name": "JUMPDEST" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 932, + "end": 964, + "name": "JUMP" + }, + { + "begin": 932, + "end": 964, + "name": "tag", + "value": "21" + }, + { + "begin": 932, + "end": 964, + "name": "JUMPDEST" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH", + "value": "40" + }, + { + "begin": 932, + "end": 964, + "name": "DUP1" + }, + { + "begin": 932, + "end": 964, + "name": "MLOAD" + }, + { + "begin": 932, + "end": 964, + "name": "SWAP2" + }, + { + "begin": 932, + "end": 964, + "name": "DUP3" + }, + { + "begin": 932, + "end": 964, + "name": "MSTORE" + }, + { + "begin": 932, + "end": 964, + "name": "MLOAD" + }, + { + "begin": 932, + "end": 964, + "name": "SWAP1" + }, + { + "begin": 932, + "end": 964, + "name": "DUP2" + }, + { + "begin": 932, + "end": 964, + "name": "SWAP1" + }, + { + "begin": 932, + "end": 964, + "name": "SUB" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH", + "value": "20" + }, + { + "begin": 932, + "end": 964, + "name": "ADD" + }, + { + "begin": 932, + "end": 964, + "name": "SWAP1" + }, + { + "begin": 932, + "end": 964, + "name": "RETURN" + }, + { + "begin": 1066, + "end": 1675, + "name": "tag", + "value": "5" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPDEST" + }, + { + "begin": 1066, + "end": 1675, + "name": "CALLVALUE" + }, + { + "begin": 1066, + "end": 1675, + "name": "ISZERO" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPI" + }, + { + "begin": 1066, + "end": 1675, + "name": "INVALID" + }, + { + "begin": 1066, + "end": 1675, + "name": "tag", + "value": "23" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPDEST" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1066, + "end": 1675, + "name": "CALLDATALOAD" + }, + { + "begin": 1066, + "end": 1675, + "name": "DUP2" + }, + { + "begin": 1066, + "end": 1675, + "name": "AND" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP1" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "24" + }, + { + "begin": 1066, + "end": 1675, + "name": "CALLDATALOAD" + }, + { + "begin": 1066, + "end": 1675, + "name": "AND" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "44" + }, + { + "begin": 1066, + "end": 1675, + "name": "CALLDATALOAD" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMP" + }, + { + "begin": 1066, + "end": 1675, + "name": "tag", + "value": "24" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPDEST" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1066, + "end": 1675, + "name": "DUP1" + }, + { + "begin": 1066, + "end": 1675, + "name": "MLOAD" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP2" + }, + { + "begin": 1066, + "end": 1675, + "name": "ISZERO" + }, + { + "begin": 1066, + "end": 1675, + "name": "ISZERO" + }, + { + "begin": 1066, + "end": 1675, + "name": "DUP3" + }, + { + "begin": 1066, + "end": 1675, + "name": "MSTORE" + }, + { + "begin": 1066, + "end": 1675, + "name": "MLOAD" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP1" + }, + { + "begin": 1066, + "end": 1675, + "name": "DUP2" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP1" + }, + { + "begin": 1066, + "end": 1675, + "name": "SUB" + }, + { + "begin": 1066, + "end": 1675, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1066, + "end": 1675, + "name": "ADD" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP1" + }, + { + "begin": 1066, + "end": 1675, + "name": "RETURN" + }, + { + "begin": 891, + "end": 926, + "name": "tag", + "value": "6" + }, + { + "begin": 891, + "end": 926, + "name": "JUMPDEST" + }, + { + "begin": 891, + "end": 926, + "name": "CALLVALUE" + }, + { + "begin": 891, + "end": 926, + "name": "ISZERO" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH [tag]", + "value": "26" + }, + { + "begin": 891, + "end": 926, + "name": "JUMPI" + }, + { + "begin": 891, + "end": 926, + "name": "INVALID" + }, + { + "begin": 891, + "end": 926, + "name": "tag", + "value": "26" + }, + { + "begin": 891, + "end": 926, + "name": "JUMPDEST" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH [tag]", + "value": "27" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 891, + "end": 926, + "name": "JUMP" + }, + { + "begin": 891, + "end": 926, + "name": "tag", + "value": "27" + }, + { + "begin": 891, + "end": 926, + "name": "JUMPDEST" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH", + "value": "40" + }, + { + "begin": 891, + "end": 926, + "name": "DUP1" + }, + { + "begin": 891, + "end": 926, + "name": "MLOAD" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH", + "value": "FF" + }, + { + "begin": 891, + "end": 926, + "name": "SWAP1" + }, + { + "begin": 891, + "end": 926, + "name": "SWAP3" + }, + { + "begin": 891, + "end": 926, + "name": "AND" + }, + { + "begin": 891, + "end": 926, + "name": "DUP3" + }, + { + "begin": 891, + "end": 926, + "name": "MSTORE" + }, + { + "begin": 891, + "end": 926, + "name": "MLOAD" + }, + { + "begin": 891, + "end": 926, + "name": "SWAP1" + }, + { + "begin": 891, + "end": 926, + "name": "DUP2" + }, + { + "begin": 891, + "end": 926, + "name": "SWAP1" + }, + { + "begin": 891, + "end": 926, + "name": "SUB" + }, + { + "begin": 891, + "end": 926, + "name": "PUSH", + "value": "20" + }, + { + "begin": 891, + "end": 926, + "name": "ADD" + }, + { + "begin": 891, + "end": 926, + "name": "SWAP1" + }, + { + "begin": 891, + "end": 926, + "name": "RETURN" + }, + { + "begin": 982, + "end": 1081, + "name": "tag", + "value": "7" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPDEST" + }, + { + "begin": 982, + "end": 1081, + "name": "CALLVALUE" + }, + { + "begin": 982, + "end": 1081, + "name": "ISZERO" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH [tag]", + "value": "29" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPI" + }, + { + "begin": 982, + "end": 1081, + "name": "INVALID" + }, + { + "begin": 982, + "end": 1081, + "name": "tag", + "value": "29" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPDEST" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH", + "value": "4" + }, + { + "begin": 982, + "end": 1081, + "name": "CALLDATALOAD" + }, + { + "begin": 982, + "end": 1081, + "name": "AND" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH [tag]", + "value": "31" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMP" + }, + { + "begin": 982, + "end": 1081, + "name": "tag", + "value": "30" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPDEST" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH", + "value": "40" + }, + { + "begin": 982, + "end": 1081, + "name": "DUP1" + }, + { + "begin": 982, + "end": 1081, + "name": "MLOAD" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP2" + }, + { + "begin": 982, + "end": 1081, + "name": "DUP3" + }, + { + "begin": 982, + "end": 1081, + "name": "MSTORE" + }, + { + "begin": 982, + "end": 1081, + "name": "MLOAD" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP1" + }, + { + "begin": 982, + "end": 1081, + "name": "DUP2" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP1" + }, + { + "begin": 982, + "end": 1081, + "name": "SUB" + }, + { + "begin": 982, + "end": 1081, + "name": "PUSH", + "value": "20" + }, + { + "begin": 982, + "end": 1081, + "name": "ADD" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP1" + }, + { + "begin": 982, + "end": 1081, + "name": "RETURN" + }, + { + "begin": 1064, + "end": 1101, + "name": "tag", + "value": "8" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMPDEST" + }, + { + "begin": 1064, + "end": 1101, + "name": "CALLVALUE" + }, + { + "begin": 1064, + "end": 1101, + "name": "ISZERO" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH [tag]", + "value": "32" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMPI" + }, + { + "begin": 1064, + "end": 1101, + "name": "INVALID" + }, + { + "begin": 1064, + "end": 1101, + "name": "tag", + "value": "32" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMPDEST" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH [tag]", + "value": "34" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMP" + }, + { + "begin": 1064, + "end": 1101, + "name": "tag", + "value": "33" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMPDEST" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "MLOAD" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP3" + }, + { + "begin": 1064, + "end": 1101, + "name": "MSTORE" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "MLOAD" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "ADD" + }, + { + "begin": 1064, + "end": 1101, + "name": "MSTORE" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "MLOAD" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP3" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP3" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "ADD" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP6" + }, + { + "begin": 1064, + "end": 1101, + "name": "ADD" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP4" + }, + { + "begin": 18, + "end": 20, + "name": "DUP3" + }, + { + "begin": 18, + "end": 20, + "name": "ISZERO" + }, + { + "begin": 13, + "end": 16, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 7, + "end": 12, + "name": "JUMPI" + }, + { + "begin": 32, + "end": 37, + "name": "tag", + "value": "36" + }, + { + "begin": 32, + "end": 37, + "name": "JUMPDEST" + }, + { + "begin": 59, + "end": 62, + "name": "DUP1" + }, + { + "begin": 53, + "end": 58, + "name": "MLOAD" + }, + { + "begin": 48, + "end": 51, + "name": "DUP3" + }, + { + "begin": 41, + "end": 47, + "name": "MSTORE" + }, + { + "begin": 93, + "end": 95, + "name": "PUSH", + "value": "20" + }, + { + "begin": 88, + "end": 91, + "name": "DUP4" + }, + { + "begin": 85, + "end": 87, + "name": "GT" + }, + { + "begin": 78, + "end": 84, + "name": "ISZERO" + }, + { + "begin": 73, + "end": 76, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 67, + "end": 72, + "name": "JUMPI" + }, + { + "begin": 152, + "end": 155, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP1" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP3" + }, + { + "begin": 152, + "end": 155, + "name": "ADD" + }, + { + "begin": 152, + "end": 155, + "name": "SWAP2" + }, + { + "begin": 117, + "end": 119, + "name": "PUSH", + "value": "20" + }, + { + "begin": 108, + "end": 111, + "name": "SWAP2" + }, + { + "begin": 108, + "end": 111, + "name": "DUP3" + }, + { + "begin": 108, + "end": 111, + "name": "ADD" + }, + { + "begin": 108, + "end": 111, + "name": "SWAP2" + }, + { + "begin": 130, + "end": 133, + "name": "ADD" + }, + { + "begin": 172, + "end": 177, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 167, + "end": 171, + "name": "JUMP" + }, + { + "begin": 181, + "end": 184, + "name": "tag", + "value": "35" + }, + { + "begin": 181, + "end": 184, + "name": "JUMPDEST" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP2" + }, + { + "begin": 3, + "end": 189, + "name": "ADD" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "1F" + }, + { + "begin": 3, + "end": 189, + "name": "AND" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "ISZERO" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 3, + "end": 189, + "name": "JUMPI" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP3" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "MLOAD" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "1" + }, + { + "begin": 3, + "end": 189, + "name": "DUP4" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "20" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "100" + }, + { + "begin": 3, + "end": 189, + "name": "EXP" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "NOT" + }, + { + "begin": 3, + "end": 189, + "name": "AND" + }, + { + "begin": 3, + "end": 189, + "name": "DUP2" + }, + { + "begin": 3, + "end": 189, + "name": "MSTORE" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "20" + }, + { + "begin": 3, + "end": 189, + "name": "ADD" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP2" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "tag", + "value": "37" + }, + { + "begin": 3, + "end": 189, + "name": "JUMPDEST" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP3" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "POP" + }, + { + "begin": 3, + "end": 189, + "name": "PUSH", + "value": "40" + }, + { + "begin": 3, + "end": 189, + "name": "MLOAD" + }, + { + "begin": 3, + "end": 189, + "name": "DUP1" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP2" + }, + { + "begin": 3, + "end": 189, + "name": "SUB" + }, + { + "begin": 3, + "end": 189, + "name": "SWAP1" + }, + { + "begin": 3, + "end": 189, + "name": "RETURN" + }, + { + "begin": 125, + "end": 535, + "name": "tag", + "value": "9" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPDEST" + }, + { + "begin": 125, + "end": 535, + "name": "CALLVALUE" + }, + { + "begin": 125, + "end": 535, + "name": "ISZERO" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH [tag]", + "value": "38" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPI" + }, + { + "begin": 125, + "end": 535, + "name": "INVALID" + }, + { + "begin": 125, + "end": 535, + "name": "tag", + "value": "38" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPDEST" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH", + "value": "4" + }, + { + "begin": 125, + "end": 535, + "name": "CALLDATALOAD" + }, + { + "begin": 125, + "end": 535, + "name": "AND" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH", + "value": "24" + }, + { + "begin": 125, + "end": 535, + "name": "CALLDATALOAD" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH [tag]", + "value": "40" + }, + { + "begin": 125, + "end": 535, + "name": "JUMP" + }, + { + "begin": 125, + "end": 535, + "name": "tag", + "value": "39" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPDEST" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH", + "value": "40" + }, + { + "begin": 125, + "end": 535, + "name": "DUP1" + }, + { + "begin": 125, + "end": 535, + "name": "MLOAD" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP2" + }, + { + "begin": 125, + "end": 535, + "name": "ISZERO" + }, + { + "begin": 125, + "end": 535, + "name": "ISZERO" + }, + { + "begin": 125, + "end": 535, + "name": "DUP3" + }, + { + "begin": 125, + "end": 535, + "name": "MSTORE" + }, + { + "begin": 125, + "end": 535, + "name": "MLOAD" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP1" + }, + { + "begin": 125, + "end": 535, + "name": "DUP2" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP1" + }, + { + "begin": 125, + "end": 535, + "name": "SUB" + }, + { + "begin": 125, + "end": 535, + "name": "PUSH", + "value": "20" + }, + { + "begin": 125, + "end": 535, + "name": "ADD" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP1" + }, + { + "begin": 125, + "end": 535, + "name": "RETURN" + }, + { + "begin": 1280, + "end": 1406, + "name": "tag", + "value": "10" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPDEST" + }, + { + "begin": 1280, + "end": 1406, + "name": "CALLVALUE" + }, + { + "begin": 1280, + "end": 1406, + "name": "ISZERO" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH [tag]", + "value": "41" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPI" + }, + { + "begin": 1280, + "end": 1406, + "name": "INVALID" + }, + { + "begin": 1280, + "end": 1406, + "name": "tag", + "value": "41" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPDEST" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1280, + "end": 1406, + "name": "CALLDATALOAD" + }, + { + "begin": 1280, + "end": 1406, + "name": "DUP2" + }, + { + "begin": 1280, + "end": 1406, + "name": "AND" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP1" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH", + "value": "24" + }, + { + "begin": 1280, + "end": 1406, + "name": "CALLDATALOAD" + }, + { + "begin": 1280, + "end": 1406, + "name": "AND" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH [tag]", + "value": "43" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMP" + }, + { + "begin": 1280, + "end": 1406, + "name": "tag", + "value": "42" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPDEST" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1280, + "end": 1406, + "name": "DUP1" + }, + { + "begin": 1280, + "end": 1406, + "name": "MLOAD" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP2" + }, + { + "begin": 1280, + "end": 1406, + "name": "DUP3" + }, + { + "begin": 1280, + "end": 1406, + "name": "MSTORE" + }, + { + "begin": 1280, + "end": 1406, + "name": "MLOAD" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP1" + }, + { + "begin": 1280, + "end": 1406, + "name": "DUP2" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP1" + }, + { + "begin": 1280, + "end": 1406, + "name": "SUB" + }, + { + "begin": 1280, + "end": 1406, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1280, + "end": 1406, + "name": "ADD" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP1" + }, + { + "begin": 1280, + "end": 1406, + "name": "RETURN" + }, + { + "begin": 1009, + "end": 1058, + "name": "tag", + "value": "13" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMPDEST" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "MLOAD" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP3" + }, + { + "begin": 1009, + "end": 1058, + "name": "ADD" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP1" + }, + { + "begin": 1009, + "end": 1058, + "name": "SWAP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "MSTORE" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "11" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "MSTORE" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "30782050726F746F636F6C20546F6B656E000000000000000000000000000000" + }, + { + "begin": 1009, + "end": 1058, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP3" + }, + { + "begin": 1009, + "end": 1058, + "name": "ADD" + }, + { + "begin": 1009, + "end": 1058, + "name": "MSTORE" + }, + { + "begin": 1009, + "end": 1058, + "name": "DUP2" + }, + { + "begin": 1009, + "end": 1058, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1087, + "end": 1274, + "name": "tag", + "value": "19" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPDEST" + }, + { + "begin": 1160, + "end": 1179, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1168, + "end": 1178, + "name": "CALLER" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP2" + }, + { + "begin": 1160, + "end": 1179, + "name": "AND" + }, + { + "begin": 1144, + "end": 1148, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP2" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP2" + }, + { + "begin": 1160, + "end": 1179, + "name": "MSTORE" + }, + { + "begin": 1160, + "end": 1167, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1160, + "end": 1179, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1160, + "end": 1179, + "name": "SWAP1" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP2" + }, + { + "begin": 1160, + "end": 1179, + "name": "MSTORE" + }, + { + "begin": 1160, + "end": 1179, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP1" + }, + { + "begin": 1160, + "end": 1179, + "name": "DUP4" + }, + { + "begin": 1160, + "end": 1179, + "name": "SHA3" + }, + { + "begin": 1160, + "end": 1189, + "name": "SWAP5" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP8" + }, + { + "begin": 1160, + "end": 1189, + "name": "AND" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP1" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP5" + }, + { + "begin": 1160, + "end": 1189, + "name": "MSTORE" + }, + { + "begin": 1160, + "end": 1189, + "name": "SWAP5" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP3" + }, + { + "begin": 1160, + "end": 1189, + "name": "MSTORE" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP1" + }, + { + "begin": 1160, + "end": 1189, + "name": "DUP4" + }, + { + "begin": 1160, + "end": 1189, + "name": "SHA3" + }, + { + "begin": 1160, + "end": 1198, + "name": "DUP7" + }, + { + "begin": 1160, + "end": 1198, + "name": "SWAP1" + }, + { + "begin": 1160, + "end": 1198, + "name": "SSTORE" + }, + { + "begin": 1208, + "end": 1246, + "name": "DUP1" + }, + { + "begin": 1208, + "end": 1246, + "name": "MLOAD" + }, + { + "begin": 1208, + "end": 1246, + "name": "DUP7" + }, + { + "begin": 1208, + "end": 1246, + "name": "DUP2" + }, + { + "begin": 1208, + "end": 1246, + "name": "MSTORE" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP1" + }, + { + "begin": 1208, + "end": 1246, + "name": "MLOAD" + }, + { + "begin": 1144, + "end": 1148, + "name": "SWAP3" + }, + { + "begin": 1144, + "end": 1148, + "name": "SWAP5" + }, + { + "begin": 1160, + "end": 1189, + "name": "SWAP4" + }, + { + "begin": 1160, + "end": 1179, + "name": "SWAP3" + }, + { + "begin": 1208, + "end": 1246, + "name": "PUSH", + "value": "8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP3" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP2" + }, + { + "begin": 1208, + "end": 1246, + "name": "DUP2" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP1" + }, + { + "begin": 1208, + "end": 1246, + "name": "SUB" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP1" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP2" + }, + { + "begin": 1208, + "end": 1246, + "name": "ADD" + }, + { + "begin": 1208, + "end": 1246, + "name": "SWAP1" + }, + { + "begin": 1208, + "end": 1246, + "name": "LOG3" + }, + { + "begin": -1, + "end": -1, + "name": "POP" + }, + { + "begin": 1263, + "end": 1267, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1087, + "end": 1274, + "name": "tag", + "value": "44" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMPDEST" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP3" + }, + { + "begin": 1087, + "end": 1274, + "name": "SWAP2" + }, + { + "begin": 1087, + "end": 1274, + "name": "POP" + }, + { + "begin": 1087, + "end": 1274, + "name": "POP" + }, + { + "begin": 1087, + "end": 1274, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 932, + "end": 964, + "name": "tag", + "value": "22" + }, + { + "begin": 932, + "end": 964, + "name": "JUMPDEST" + }, + { + "begin": 932, + "end": 964, + "name": "PUSH", + "value": "3" + }, + { + "begin": 932, + "end": 964, + "name": "SLOAD" + }, + { + "begin": 932, + "end": 964, + "name": "DUP2" + }, + { + "begin": 932, + "end": 964, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1066, + "end": 1675, + "name": "tag", + "value": "25" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPDEST" + }, + { + "begin": 1198, + "end": 1212, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP1" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP5" + }, + { + "begin": 1198, + "end": 1212, + "name": "AND" + }, + { + "begin": 1161, + "end": 1165, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP2" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP2" + }, + { + "begin": 1198, + "end": 1212, + "name": "MSTORE" + }, + { + "begin": 1198, + "end": 1205, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1198, + "end": 1212, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1198, + "end": 1212, + "name": "SWAP1" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP2" + }, + { + "begin": 1198, + "end": 1212, + "name": "MSTORE" + }, + { + "begin": 1198, + "end": 1212, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP1" + }, + { + "begin": 1198, + "end": 1212, + "name": "DUP4" + }, + { + "begin": 1198, + "end": 1212, + "name": "SHA3" + }, + { + "begin": 1213, + "end": 1223, + "name": "CALLER" + }, + { + "begin": 1198, + "end": 1224, + "name": "SWAP1" + }, + { + "begin": 1198, + "end": 1224, + "name": "SWAP6" + }, + { + "begin": 1198, + "end": 1224, + "name": "AND" + }, + { + "begin": 1198, + "end": 1224, + "name": "DUP4" + }, + { + "begin": 1198, + "end": 1224, + "name": "MSTORE" + }, + { + "begin": 1198, + "end": 1224, + "name": "SWAP4" + }, + { + "begin": 1198, + "end": 1224, + "name": "DUP2" + }, + { + "begin": 1198, + "end": 1224, + "name": "MSTORE" + }, + { + "begin": 1198, + "end": 1224, + "name": "DUP4" + }, + { + "begin": 1198, + "end": 1224, + "name": "DUP3" + }, + { + "begin": 1198, + "end": 1224, + "name": "SHA3" + }, + { + "begin": 1198, + "end": 1224, + "name": "SLOAD" + }, + { + "begin": 1238, + "end": 1253, + "name": "SWAP3" + }, + { + "begin": 1238, + "end": 1253, + "name": "DUP3" + }, + { + "begin": 1238, + "end": 1253, + "name": "MSTORE" + }, + { + "begin": 1238, + "end": 1253, + "name": "DUP2" + }, + { + "begin": 1238, + "end": 1253, + "name": "SWAP1" + }, + { + "begin": 1238, + "end": 1253, + "name": "MSTORE" + }, + { + "begin": 1238, + "end": 1253, + "name": "SWAP2" + }, + { + "begin": 1238, + "end": 1253, + "name": "DUP3" + }, + { + "begin": 1238, + "end": 1253, + "name": "SHA3" + }, + { + "begin": 1238, + "end": 1253, + "name": "SLOAD" + }, + { + "begin": 1238, + "end": 1263, + "name": "DUP4" + }, + { + "begin": 1238, + "end": 1263, + "name": "SWAP1" + }, + { + "begin": 1238, + "end": 1263, + "name": "LT" + }, + { + "begin": 1238, + "end": 1263, + "name": "DUP1" + }, + { + "begin": 1238, + "end": 1263, + "name": "ISZERO" + }, + { + "begin": 1238, + "end": 1263, + "name": "SWAP1" + }, + { + "begin": 1238, + "end": 1298, + "name": "PUSH [tag]", + "value": "46" + }, + { + "begin": 1238, + "end": 1298, + "name": "JUMPI" + }, + { + "begin": 1238, + "end": 1298, + "name": "POP" + }, + { + "begin": 1292, + "end": 1298, + "name": "DUP3" + }, + { + "begin": 1279, + "end": 1288, + "name": "DUP2" + }, + { + "begin": 1279, + "end": 1298, + "name": "LT" + }, + { + "begin": 1279, + "end": 1298, + "name": "ISZERO" + }, + { + "begin": 1238, + "end": 1298, + "name": "tag", + "value": "46" + }, + { + "begin": 1238, + "end": 1298, + "name": "JUMPDEST" + }, + { + "begin": 1238, + "end": 1353, + "name": "DUP1" + }, + { + "begin": 1238, + "end": 1353, + "name": "ISZERO" + }, + { + "begin": 1238, + "end": 1353, + "name": "PUSH [tag]", + "value": "47" + }, + { + "begin": 1238, + "end": 1353, + "name": "JUMPI" + }, + { + "begin": -1, + "end": -1, + "name": "POP" + }, + { + "begin": 1340, + "end": 1353, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1340, + "end": 1353, + "name": "DUP5" + }, + { + "begin": 1340, + "end": 1353, + "name": "AND" + }, + { + "begin": 1340, + "end": 1348, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1340, + "end": 1353, + "name": "SWAP1" + }, + { + "begin": 1340, + "end": 1353, + "name": "DUP2" + }, + { + "begin": 1340, + "end": 1353, + "name": "MSTORE" + }, + { + "begin": 1340, + "end": 1353, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1340, + "end": 1353, + "name": "DUP2" + }, + { + "begin": 1340, + "end": 1353, + "name": "SWAP1" + }, + { + "begin": 1340, + "end": 1353, + "name": "MSTORE" + }, + { + "begin": 1340, + "end": 1353, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1340, + "end": 1353, + "name": "SWAP1" + }, + { + "begin": 1340, + "end": 1353, + "name": "SHA3" + }, + { + "begin": 1340, + "end": 1353, + "name": "SLOAD" + }, + { + "begin": 1314, + "end": 1336, + "name": "DUP4" + }, + { + "begin": 1314, + "end": 1336, + "name": "DUP2" + }, + { + "begin": 1314, + "end": 1336, + "name": "ADD" + }, + { + "begin": 1314, + "end": 1353, + "name": "LT" + }, + { + "begin": 1314, + "end": 1353, + "name": "ISZERO" + }, + { + "begin": 1238, + "end": 1353, + "name": "tag", + "value": "47" + }, + { + "begin": 1238, + "end": 1353, + "name": "JUMPDEST" + }, + { + "begin": 1234, + "end": 1669, + "name": "ISZERO" + }, + { + "begin": 1234, + "end": 1669, + "name": "PUSH [tag]", + "value": "48" + }, + { + "begin": 1234, + "end": 1669, + "name": "JUMPI" + }, + { + "begin": 1378, + "end": 1391, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP1" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP6" + }, + { + "begin": 1378, + "end": 1391, + "name": "AND" + }, + { + "begin": 1378, + "end": 1386, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1378, + "end": 1391, + "name": "SWAP1" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP2" + }, + { + "begin": 1378, + "end": 1391, + "name": "MSTORE" + }, + { + "begin": 1378, + "end": 1391, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP2" + }, + { + "begin": 1378, + "end": 1391, + "name": "SWAP1" + }, + { + "begin": 1378, + "end": 1391, + "name": "MSTORE" + }, + { + "begin": 1378, + "end": 1391, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP1" + }, + { + "begin": 1378, + "end": 1391, + "name": "DUP3" + }, + { + "begin": 1378, + "end": 1391, + "name": "SHA3" + }, + { + "begin": 1378, + "end": 1401, + "name": "DUP1" + }, + { + "begin": 1378, + "end": 1401, + "name": "SLOAD" + }, + { + "begin": 1378, + "end": 1401, + "name": "DUP8" + }, + { + "begin": 1378, + "end": 1401, + "name": "ADD" + }, + { + "begin": 1378, + "end": 1401, + "name": "SWAP1" + }, + { + "begin": 1378, + "end": 1401, + "name": "SSTORE" + }, + { + "begin": 1415, + "end": 1430, + "name": "SWAP2" + }, + { + "begin": 1415, + "end": 1430, + "name": "DUP8" + }, + { + "begin": 1415, + "end": 1430, + "name": "AND" + }, + { + "begin": 1415, + "end": 1430, + "name": "DUP2" + }, + { + "begin": 1415, + "end": 1430, + "name": "MSTORE" + }, + { + "begin": 1415, + "end": 1430, + "name": "SHA3" + }, + { + "begin": 1415, + "end": 1440, + "name": "DUP1" + }, + { + "begin": 1415, + "end": 1440, + "name": "SLOAD" + }, + { + "begin": 1415, + "end": 1440, + "name": "DUP5" + }, + { + "begin": 1415, + "end": 1440, + "name": "SWAP1" + }, + { + "begin": 1415, + "end": 1440, + "name": "SUB" + }, + { + "begin": 1415, + "end": 1440, + "name": "SWAP1" + }, + { + "begin": 1415, + "end": 1440, + "name": "SSTORE" + }, + { + "begin": 768, + "end": 778, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1458, + "end": 1478, + "name": "DUP2" + }, + { + "begin": 1458, + "end": 1478, + "name": "LT" + }, + { + "begin": 1454, + "end": 1549, + "name": "ISZERO" + }, + { + "begin": 1454, + "end": 1549, + "name": "PUSH [tag]", + "value": "49" + }, + { + "begin": 1454, + "end": 1549, + "name": "JUMPI" + }, + { + "begin": 1498, + "end": 1512, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP1" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP7" + }, + { + "begin": 1498, + "end": 1512, + "name": "AND" + }, + { + "begin": 1498, + "end": 1512, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1498, + "end": 1512, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP2" + }, + { + "begin": 1498, + "end": 1512, + "name": "MSTORE" + }, + { + "begin": 1498, + "end": 1505, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1498, + "end": 1512, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1498, + "end": 1512, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP2" + }, + { + "begin": 1498, + "end": 1512, + "name": "MSTORE" + }, + { + "begin": 1498, + "end": 1512, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP1" + }, + { + "begin": 1498, + "end": 1512, + "name": "DUP4" + }, + { + "begin": 1498, + "end": 1512, + "name": "SHA3" + }, + { + "begin": 1513, + "end": 1523, + "name": "CALLER" + }, + { + "begin": 1498, + "end": 1524, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1524, + "name": "SWAP5" + }, + { + "begin": 1498, + "end": 1524, + "name": "AND" + }, + { + "begin": 1498, + "end": 1524, + "name": "DUP4" + }, + { + "begin": 1498, + "end": 1524, + "name": "MSTORE" + }, + { + "begin": 1498, + "end": 1524, + "name": "SWAP3" + }, + { + "begin": 1498, + "end": 1524, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1524, + "name": "MSTORE" + }, + { + "begin": 1498, + "end": 1524, + "name": "SHA3" + }, + { + "begin": 1498, + "end": 1534, + "name": "DUP1" + }, + { + "begin": 1498, + "end": 1534, + "name": "SLOAD" + }, + { + "begin": 1498, + "end": 1534, + "name": "DUP5" + }, + { + "begin": 1498, + "end": 1534, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1534, + "name": "SUB" + }, + { + "begin": 1498, + "end": 1534, + "name": "SWAP1" + }, + { + "begin": 1498, + "end": 1534, + "name": "SSTORE" + }, + { + "begin": 1454, + "end": 1549, + "name": "tag", + "value": "49" + }, + { + "begin": 1454, + "end": 1549, + "name": "JUMPDEST" + }, + { + "begin": 1578, + "end": 1581, + "name": "DUP4" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1562, + "end": 1590, + "name": "AND" + }, + { + "begin": 1571, + "end": 1576, + "name": "DUP6" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1562, + "end": 1590, + "name": "AND" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF" + }, + { + "begin": 1583, + "end": 1589, + "name": "DUP6" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1562, + "end": 1590, + "name": "MLOAD" + }, + { + "begin": 1562, + "end": 1590, + "name": "DUP1" + }, + { + "begin": 1562, + "end": 1590, + "name": "DUP3" + }, + { + "begin": 1562, + "end": 1590, + "name": "DUP2" + }, + { + "begin": 1562, + "end": 1590, + "name": "MSTORE" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1562, + "end": 1590, + "name": "ADD" + }, + { + "begin": 1562, + "end": 1590, + "name": "SWAP2" + }, + { + "begin": 1562, + "end": 1590, + "name": "POP" + }, + { + "begin": 1562, + "end": 1590, + "name": "POP" + }, + { + "begin": 1562, + "end": 1590, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1562, + "end": 1590, + "name": "MLOAD" + }, + { + "begin": 1562, + "end": 1590, + "name": "DUP1" + }, + { + "begin": 1562, + "end": 1590, + "name": "SWAP2" + }, + { + "begin": 1562, + "end": 1590, + "name": "SUB" + }, + { + "begin": 1562, + "end": 1590, + "name": "SWAP1" + }, + { + "begin": 1562, + "end": 1590, + "name": "LOG3" + }, + { + "begin": 1611, + "end": 1615, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1604, + "end": 1615, + "name": "SWAP2" + }, + { + "begin": 1604, + "end": 1615, + "name": "POP" + }, + { + "begin": 1604, + "end": 1615, + "name": "PUSH [tag]", + "value": "50" + }, + { + "begin": 1604, + "end": 1615, + "name": "JUMP" + }, + { + "begin": 1234, + "end": 1669, + "name": "tag", + "value": "48" + }, + { + "begin": 1234, + "end": 1669, + "name": "JUMPDEST" + }, + { + "begin": 1653, + "end": 1658, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1646, + "end": 1658, + "name": "SWAP2" + }, + { + "begin": 1646, + "end": 1658, + "name": "POP" + }, + { + "begin": 1234, + "end": 1669, + "name": "tag", + "value": "50" + }, + { + "begin": 1234, + "end": 1669, + "name": "JUMPDEST" + }, + { + "begin": 1066, + "end": 1675, + "name": "tag", + "value": "45" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMPDEST" + }, + { + "begin": 1066, + "end": 1675, + "name": "POP" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP4" + }, + { + "begin": 1066, + "end": 1675, + "name": "SWAP3" + }, + { + "begin": 1066, + "end": 1675, + "name": "POP" + }, + { + "begin": 1066, + "end": 1675, + "name": "POP" + }, + { + "begin": 1066, + "end": 1675, + "name": "POP" + }, + { + "begin": 1066, + "end": 1675, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 891, + "end": 926, + "name": "tag", + "value": "28" + }, + { + "begin": 891, + "end": 926, + "name": "JUMPDEST" + }, + { + "begin": 924, + "end": 926, + "name": "PUSH", + "value": "12" + }, + { + "begin": 891, + "end": 926, + "name": "DUP2" + }, + { + "begin": 891, + "end": 926, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 982, + "end": 1081, + "name": "tag", + "value": "31" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPDEST" + }, + { + "begin": 1058, + "end": 1074, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1058, + "end": 1074, + "name": "DUP2" + }, + { + "begin": 1058, + "end": 1074, + "name": "AND" + }, + { + "begin": 1035, + "end": 1039, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1058, + "end": 1074, + "name": "SWAP1" + }, + { + "begin": 1058, + "end": 1074, + "name": "DUP2" + }, + { + "begin": 1058, + "end": 1074, + "name": "MSTORE" + }, + { + "begin": 1058, + "end": 1074, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1058, + "end": 1074, + "name": "DUP2" + }, + { + "begin": 1058, + "end": 1074, + "name": "SWAP1" + }, + { + "begin": 1058, + "end": 1074, + "name": "MSTORE" + }, + { + "begin": 1058, + "end": 1074, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1058, + "end": 1074, + "name": "SWAP1" + }, + { + "begin": 1058, + "end": 1074, + "name": "SHA3" + }, + { + "begin": 1058, + "end": 1074, + "name": "SLOAD" + }, + { + "begin": 982, + "end": 1081, + "name": "tag", + "value": "51" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMPDEST" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP2" + }, + { + "begin": 982, + "end": 1081, + "name": "SWAP1" + }, + { + "begin": 982, + "end": 1081, + "name": "POP" + }, + { + "begin": 982, + "end": 1081, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1064, + "end": 1101, + "name": "tag", + "value": "34" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMPDEST" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "MLOAD" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP3" + }, + { + "begin": 1064, + "end": 1101, + "name": "ADD" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP1" + }, + { + "begin": 1064, + "end": 1101, + "name": "SWAP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "MSTORE" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "3" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "MSTORE" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "5A52580000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1064, + "end": 1101, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP3" + }, + { + "begin": 1064, + "end": 1101, + "name": "ADD" + }, + { + "begin": 1064, + "end": 1101, + "name": "MSTORE" + }, + { + "begin": 1064, + "end": 1101, + "name": "DUP2" + }, + { + "begin": 1064, + "end": 1101, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 125, + "end": 535, + "name": "tag", + "value": "40" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPDEST" + }, + { + "begin": 267, + "end": 287, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 276, + "end": 286, + "name": "CALLER" + }, + { + "begin": 267, + "end": 287, + "name": "AND" + }, + { + "begin": 178, + "end": 182, + "name": "PUSH", + "value": "0" + }, + { + "begin": 267, + "end": 287, + "name": "SWAP1" + }, + { + "begin": 267, + "end": 287, + "name": "DUP2" + }, + { + "begin": 267, + "end": 287, + "name": "MSTORE" + }, + { + "begin": 267, + "end": 287, + "name": "PUSH", + "value": "20" + }, + { + "begin": 267, + "end": 287, + "name": "DUP2" + }, + { + "begin": 267, + "end": 287, + "name": "SWAP1" + }, + { + "begin": 267, + "end": 287, + "name": "MSTORE" + }, + { + "begin": 267, + "end": 287, + "name": "PUSH", + "value": "40" + }, + { + "begin": 267, + "end": 287, + "name": "DUP2" + }, + { + "begin": 267, + "end": 287, + "name": "SHA3" + }, + { + "begin": 267, + "end": 287, + "name": "SLOAD" + }, + { + "begin": 267, + "end": 297, + "name": "DUP3" + }, + { + "begin": 267, + "end": 297, + "name": "SWAP1" + }, + { + "begin": 267, + "end": 297, + "name": "LT" + }, + { + "begin": 267, + "end": 297, + "name": "DUP1" + }, + { + "begin": 267, + "end": 297, + "name": "ISZERO" + }, + { + "begin": 267, + "end": 297, + "name": "SWAP1" + }, + { + "begin": 267, + "end": 340, + "name": "PUSH [tag]", + "value": "53" + }, + { + "begin": 267, + "end": 340, + "name": "JUMPI" + }, + { + "begin": -1, + "end": -1, + "name": "POP" + }, + { + "begin": 327, + "end": 340, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 327, + "end": 340, + "name": "DUP4" + }, + { + "begin": 327, + "end": 340, + "name": "AND" + }, + { + "begin": 327, + "end": 335, + "name": "PUSH", + "value": "0" + }, + { + "begin": 327, + "end": 340, + "name": "SWAP1" + }, + { + "begin": 327, + "end": 340, + "name": "DUP2" + }, + { + "begin": 327, + "end": 340, + "name": "MSTORE" + }, + { + "begin": 327, + "end": 340, + "name": "PUSH", + "value": "20" + }, + { + "begin": 327, + "end": 340, + "name": "DUP2" + }, + { + "begin": 327, + "end": 340, + "name": "SWAP1" + }, + { + "begin": 327, + "end": 340, + "name": "MSTORE" + }, + { + "begin": 327, + "end": 340, + "name": "PUSH", + "value": "40" + }, + { + "begin": 327, + "end": 340, + "name": "SWAP1" + }, + { + "begin": 327, + "end": 340, + "name": "SHA3" + }, + { + "begin": 327, + "end": 340, + "name": "SLOAD" + }, + { + "begin": 301, + "end": 323, + "name": "DUP3" + }, + { + "begin": 301, + "end": 323, + "name": "DUP2" + }, + { + "begin": 301, + "end": 323, + "name": "ADD" + }, + { + "begin": 301, + "end": 340, + "name": "LT" + }, + { + "begin": 301, + "end": 340, + "name": "ISZERO" + }, + { + "begin": 267, + "end": 340, + "name": "tag", + "value": "53" + }, + { + "begin": 267, + "end": 340, + "name": "JUMPDEST" + }, + { + "begin": 263, + "end": 529, + "name": "ISZERO" + }, + { + "begin": 263, + "end": 529, + "name": "PUSH [tag]", + "value": "54" + }, + { + "begin": 263, + "end": 529, + "name": "JUMPI" + }, + { + "begin": 356, + "end": 376, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 365, + "end": 375, + "name": "CALLER" + }, + { + "begin": 356, + "end": 376, + "name": "DUP2" + }, + { + "begin": 356, + "end": 376, + "name": "AND" + }, + { + "begin": 356, + "end": 364, + "name": "PUSH", + "value": "0" + }, + { + "begin": 356, + "end": 376, + "name": "DUP2" + }, + { + "begin": 356, + "end": 376, + "name": "DUP2" + }, + { + "begin": 356, + "end": 376, + "name": "MSTORE" + }, + { + "begin": 356, + "end": 376, + "name": "PUSH", + "value": "20" + }, + { + "begin": 356, + "end": 376, + "name": "DUP2" + }, + { + "begin": 356, + "end": 376, + "name": "DUP2" + }, + { + "begin": 356, + "end": 376, + "name": "MSTORE" + }, + { + "begin": 356, + "end": 376, + "name": "PUSH", + "value": "40" + }, + { + "begin": 356, + "end": 376, + "name": "DUP1" + }, + { + "begin": 356, + "end": 376, + "name": "DUP4" + }, + { + "begin": 356, + "end": 376, + "name": "SHA3" + }, + { + "begin": 356, + "end": 386, + "name": "DUP1" + }, + { + "begin": 356, + "end": 386, + "name": "SLOAD" + }, + { + "begin": 356, + "end": 386, + "name": "DUP9" + }, + { + "begin": 356, + "end": 386, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 386, + "name": "SUB" + }, + { + "begin": 356, + "end": 386, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 386, + "name": "SSTORE" + }, + { + "begin": 400, + "end": 413, + "name": "SWAP4" + }, + { + "begin": 400, + "end": 413, + "name": "DUP8" + }, + { + "begin": 400, + "end": 413, + "name": "AND" + }, + { + "begin": 400, + "end": 413, + "name": "DUP1" + }, + { + "begin": 400, + "end": 413, + "name": "DUP4" + }, + { + "begin": 400, + "end": 413, + "name": "MSTORE" + }, + { + "begin": 400, + "end": 413, + "name": "SWAP2" + }, + { + "begin": 400, + "end": 413, + "name": "DUP5" + }, + { + "begin": 400, + "end": 413, + "name": "SWAP1" + }, + { + "begin": 400, + "end": 413, + "name": "SHA3" + }, + { + "begin": 400, + "end": 423, + "name": "DUP1" + }, + { + "begin": 400, + "end": 423, + "name": "SLOAD" + }, + { + "begin": 400, + "end": 423, + "name": "DUP8" + }, + { + "begin": 400, + "end": 423, + "name": "ADD" + }, + { + "begin": 400, + "end": 423, + "name": "SWAP1" + }, + { + "begin": 400, + "end": 423, + "name": "SSTORE" + }, + { + "begin": 437, + "end": 470, + "name": "DUP4" + }, + { + "begin": 437, + "end": 470, + "name": "MLOAD" + }, + { + "begin": 437, + "end": 470, + "name": "DUP7" + }, + { + "begin": 437, + "end": 470, + "name": "DUP2" + }, + { + "begin": 437, + "end": 470, + "name": "MSTORE" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP4" + }, + { + "begin": 437, + "end": 470, + "name": "MLOAD" + }, + { + "begin": 400, + "end": 413, + "name": "SWAP2" + }, + { + "begin": 400, + "end": 413, + "name": "SWAP4" + }, + { + "begin": 437, + "end": 470, + "name": "PUSH", + "value": "DDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP3" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP1" + }, + { + "begin": 437, + "end": 470, + "name": "DUP2" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP1" + }, + { + "begin": 437, + "end": 470, + "name": "SUB" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP1" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP2" + }, + { + "begin": 437, + "end": 470, + "name": "ADD" + }, + { + "begin": 437, + "end": 470, + "name": "SWAP1" + }, + { + "begin": 437, + "end": 470, + "name": "LOG3" + }, + { + "begin": -1, + "end": -1, + "name": "POP" + }, + { + "begin": 491, + "end": 495, + "name": "PUSH", + "value": "1" + }, + { + "begin": 484, + "end": 495, + "name": "PUSH [tag]", + "value": "44" + }, + { + "begin": 484, + "end": 495, + "name": "JUMP" + }, + { + "begin": 263, + "end": 529, + "name": "tag", + "value": "54" + }, + { + "begin": 263, + "end": 529, + "name": "JUMPDEST" + }, + { + "begin": -1, + "end": -1, + "name": "POP" + }, + { + "begin": 521, + "end": 526, + "name": "PUSH", + "value": "0" + }, + { + "begin": 514, + "end": 526, + "name": "PUSH [tag]", + "value": "44" + }, + { + "begin": 514, + "end": 526, + "name": "JUMP" + }, + { + "begin": 263, + "end": 529, + "name": "tag", + "value": "55" + }, + { + "begin": 263, + "end": 529, + "name": "JUMPDEST" + }, + { + "begin": 125, + "end": 535, + "name": "tag", + "value": "52" + }, + { + "begin": 125, + "end": 535, + "name": "JUMPDEST" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP3" + }, + { + "begin": 125, + "end": 535, + "name": "SWAP2" + }, + { + "begin": 125, + "end": 535, + "name": "POP" + }, + { + "begin": 125, + "end": 535, + "name": "POP" + }, + { + "begin": 125, + "end": 535, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1280, + "end": 1406, + "name": "tag", + "value": "43" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPDEST" + }, + { + "begin": 1374, + "end": 1389, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP1" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP4" + }, + { + "begin": 1374, + "end": 1389, + "name": "AND" + }, + { + "begin": 1351, + "end": 1355, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1374, + "end": 1389, + "name": "SWAP1" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP2" + }, + { + "begin": 1374, + "end": 1389, + "name": "MSTORE" + }, + { + "begin": 1374, + "end": 1381, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1374, + "end": 1389, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1374, + "end": 1389, + "name": "SWAP1" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP2" + }, + { + "begin": 1374, + "end": 1389, + "name": "MSTORE" + }, + { + "begin": 1374, + "end": 1389, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP1" + }, + { + "begin": 1374, + "end": 1389, + "name": "DUP4" + }, + { + "begin": 1374, + "end": 1389, + "name": "SHA3" + }, + { + "begin": 1374, + "end": 1399, + "name": "SWAP4" + }, + { + "begin": 1374, + "end": 1399, + "name": "DUP6" + }, + { + "begin": 1374, + "end": 1399, + "name": "AND" + }, + { + "begin": 1374, + "end": 1399, + "name": "DUP4" + }, + { + "begin": 1374, + "end": 1399, + "name": "MSTORE" + }, + { + "begin": 1374, + "end": 1399, + "name": "SWAP3" + }, + { + "begin": 1374, + "end": 1399, + "name": "SWAP1" + }, + { + "begin": 1374, + "end": 1399, + "name": "MSTORE" + }, + { + "begin": 1374, + "end": 1399, + "name": "SHA3" + }, + { + "begin": 1374, + "end": 1399, + "name": "SLOAD" + }, + { + "begin": 1280, + "end": 1406, + "name": "tag", + "value": "56" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMPDEST" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP3" + }, + { + "begin": 1280, + "end": 1406, + "name": "SWAP2" + }, + { + "begin": 1280, + "end": 1406, + "name": "POP" + }, + { + "begin": 1280, + "end": 1406, + "name": "POP" + }, + { + "begin": 1280, + "end": 1406, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.4.11+commit.68ef5810\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"transferFrom(address,address,uint256)\":{\"details\":\"ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.\",\"params\":{\"_from\":\"Address to transfer from.\",\"_to\":\"Address to transfer to.\",\"_value\":\"Amount to transfer.\"},\"return\":\"Success of transfer.\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"2.0.0/tokens/ZRXToken/ZRXToken.sol\":\"ZRXToken\"},\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"1.0.0/ERC20Token/ERC20Token_v1.sol\":{\"keccak256\":\"0x3d710b436c430d6fe49f64b091555405360d76da6454b93faa8e213eea34a96d\",\"urls\":[\"bzzr://d12710a563415ad98ff28ecb3aab0b68467b3d023e7c130c73ed9918ef86158e\"]},\"1.0.0/Token/Token_v1.sol\":{\"keccak256\":\"0x35a82bc7bc0994caa97f8ea44660b9b5e796acfe72705b5ff7ed8f2a3c47ff37\",\"urls\":[\"bzzr://a62ae857a4cf2e8948e36d02470c612ac1a5ac20ebe1c1b553ad1ed8becb634e\"]},\"1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\":{\"keccak256\":\"0x2e1f4b899081cedd8940a9cd0f0f7413264c883312ed0ba9c53885766fe0a1a5\",\"urls\":[\"bzzr://47c42a58e56ffe81e49c8aabd3c391f5fa807fea299b3a2178501e3669baeb52\"]},\"2.0.0/tokens/ZRXToken/ZRXToken.sol\":{\"keccak256\":\"0x9eeb623d48909b083c77688b13b610811c53e37622b3fcbaa23c01873230f5d6\",\"urls\":[\"bzzr://84f3b5c2653068092771d443281018ff2ee0543817426d0fb6f9037a3570e37f\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } + }, + "sources": { + "1.0.0/ERC20Token/ERC20Token_v1.sol": { + "id": 0, + "legacyAST": { + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.4", + ".11" + ] + }, + "id": 126, + "name": "PragmaDirective", + "src": "0:24:0" + }, + { + "attributes": { + "file": "../Token/Token_v1.sol" + }, + "id": 128, + "name": "ImportDirective", + "src": "26:58:0" + }, + { + "attributes": { + "fullyImplemented": true, + "isLibrary": false, + "linearizedBaseContracts": [ + 322, + 397 + ], + "name": "ERC20Token_v1" + }, + "children": [ + { + "children": [ + { + "attributes": { + "name": "Token" + }, + "id": 129, + "name": "UserDefinedTypeName", + "src": "112:5:0" + } + ], + "id": 130, + "name": "InheritanceSpecifier", + "src": "112:5:0" + }, + { + "attributes": { + "constant": false, + "name": "transfer", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 131, + "name": "ElementaryTypeName", + "src": "143:7:0" + } + ], + "id": 132, + "name": "VariableDeclaration", + "src": "143:11:0" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 133, + "name": "ElementaryTypeName", + "src": "156:4:0" + } + ], + "id": 134, + "name": "VariableDeclaration", + "src": "156:11:0" + } + ], + "id": 135, + "name": "ParameterList", + "src": "142:26:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 136, + "name": "ElementaryTypeName", + "src": "178:4:0" + } + ], + "id": 137, + "name": "VariableDeclaration", + "src": "178:4:0" + } + ], + "id": 138, + "name": "ParameterList", + "src": "177:6:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 139, + "name": "Identifier", + "src": "267:8:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 140, + "name": "Identifier", + "src": "276:3:0" + } + ], + "id": 141, + "name": "MemberAccess", + "src": "276:10:0" + } + ], + "id": 142, + "name": "IndexAccess", + "src": "267:20:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 143, + "name": "Identifier", + "src": "291:6:0" + } + ], + "id": 144, + "name": "BinaryOperation", + "src": "267:30:0" + }, + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 145, + "name": "Identifier", + "src": "301:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 146, + "name": "Identifier", + "src": "310:3:0" + } + ], + "id": 147, + "name": "IndexAccess", + "src": "301:13:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 148, + "name": "Identifier", + "src": "317:6:0" + } + ], + "id": 149, + "name": "BinaryOperation", + "src": "301:22:0" + }, + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 150, + "name": "Identifier", + "src": "327:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 151, + "name": "Identifier", + "src": "336:3:0" + } + ], + "id": 152, + "name": "IndexAccess", + "src": "327:13:0" + } + ], + "id": 153, + "name": "BinaryOperation", + "src": "301:39:0" + } + ], + "id": 154, + "name": "BinaryOperation", + "src": "267:73:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "-=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 155, + "name": "Identifier", + "src": "356:8:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 156, + "name": "Identifier", + "src": "365:3:0" + } + ], + "id": 157, + "name": "MemberAccess", + "src": "365:10:0" + } + ], + "id": 158, + "name": "IndexAccess", + "src": "356:20:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 159, + "name": "Identifier", + "src": "380:6:0" + } + ], + "id": 160, + "name": "Assignment", + "src": "356:30:0" + } + ], + "id": 161, + "name": "ExpressionStatement", + "src": "356:30:0" + }, + { + "children": [ + { + "attributes": { + "operator": "+=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 162, + "name": "Identifier", + "src": "400:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 163, + "name": "Identifier", + "src": "409:3:0" + } + ], + "id": 164, + "name": "IndexAccess", + "src": "400:13:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 165, + "name": "Identifier", + "src": "417:6:0" + } + ], + "id": 166, + "name": "Assignment", + "src": "400:23:0" + } + ], + "id": 167, + "name": "ExpressionStatement", + "src": "400:23:0" + }, + { + "children": [ + { + "attributes": { + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "type": "function (address,address,uint256) constant", + "value": "Transfer" + }, + "id": 168, + "name": "Identifier", + "src": "437:8:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 169, + "name": "Identifier", + "src": "446:3:0" + } + ], + "id": 170, + "name": "MemberAccess", + "src": "446:10:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 171, + "name": "Identifier", + "src": "458:3:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 172, + "name": "Identifier", + "src": "463:6:0" + } + ], + "id": 173, + "name": "FunctionCall", + "src": "437:33:0" + } + ], + "id": 174, + "name": "ExpressionStatement", + "src": "437:33:0" + }, + { + "children": [ + { + "attributes": { + "hexvalue": "74727565", + "subdenomination": null, + "token": "true", + "type": "bool", + "value": "true" + }, + "id": 175, + "name": "Literal", + "src": "491:4:0" + } + ], + "id": 176, + "name": "Return", + "src": "484:11:0" + } + ], + "id": 177, + "name": "Block", + "src": "342:164:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "hexvalue": "66616c7365", + "subdenomination": null, + "token": "false", + "type": "bool", + "value": "false" + }, + "id": 178, + "name": "Literal", + "src": "521:5:0" + } + ], + "id": 179, + "name": "Return", + "src": "514:12:0" + } + ], + "id": 180, + "name": "Block", + "src": "512:17:0" + } + ], + "id": 181, + "name": "IfStatement", + "src": "263:266:0" + } + ], + "id": 182, + "name": "Block", + "src": "184:351:0" + } + ], + "id": 183, + "name": "FunctionDefinition", + "src": "125:410:0" + }, + { + "attributes": { + "constant": false, + "name": "transferFrom", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 184, + "name": "ElementaryTypeName", + "src": "563:7:0" + } + ], + "id": 185, + "name": "VariableDeclaration", + "src": "563:13:0" + }, + { + "attributes": { + "constant": false, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 186, + "name": "ElementaryTypeName", + "src": "578:7:0" + } + ], + "id": 187, + "name": "VariableDeclaration", + "src": "578:11:0" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 188, + "name": "ElementaryTypeName", + "src": "591:4:0" + } + ], + "id": 189, + "name": "VariableDeclaration", + "src": "591:11:0" + } + ], + "id": 190, + "name": "ParameterList", + "src": "562:41:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 191, + "name": "ElementaryTypeName", + "src": "613:4:0" + } + ], + "id": 192, + "name": "VariableDeclaration", + "src": "613:4:0" + } + ], + "id": 193, + "name": "ParameterList", + "src": "612:6:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 194, + "name": "Identifier", + "src": "633:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 195, + "name": "Identifier", + "src": "642:5:0" + } + ], + "id": 196, + "name": "IndexAccess", + "src": "633:15:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 197, + "name": "Identifier", + "src": "652:6:0" + } + ], + "id": 198, + "name": "BinaryOperation", + "src": "633:25:0" + }, + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 199, + "name": "Identifier", + "src": "662:7:0" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 200, + "name": "Identifier", + "src": "670:5:0" + } + ], + "id": 201, + "name": "IndexAccess", + "src": "662:14:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 202, + "name": "Identifier", + "src": "677:3:0" + } + ], + "id": 203, + "name": "MemberAccess", + "src": "677:10:0" + } + ], + "id": 204, + "name": "IndexAccess", + "src": "662:26:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 205, + "name": "Identifier", + "src": "692:6:0" + } + ], + "id": 206, + "name": "BinaryOperation", + "src": "662:36:0" + } + ], + "id": 207, + "name": "BinaryOperation", + "src": "633:65:0" + }, + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 208, + "name": "Identifier", + "src": "702:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 209, + "name": "Identifier", + "src": "711:3:0" + } + ], + "id": 210, + "name": "IndexAccess", + "src": "702:13:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 211, + "name": "Identifier", + "src": "718:6:0" + } + ], + "id": 212, + "name": "BinaryOperation", + "src": "702:22:0" + }, + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 213, + "name": "Identifier", + "src": "728:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 214, + "name": "Identifier", + "src": "737:3:0" + } + ], + "id": 215, + "name": "IndexAccess", + "src": "728:13:0" + } + ], + "id": 216, + "name": "BinaryOperation", + "src": "702:39:0" + } + ], + "id": 217, + "name": "BinaryOperation", + "src": "633:108:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "+=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 218, + "name": "Identifier", + "src": "757:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 219, + "name": "Identifier", + "src": "766:3:0" + } + ], + "id": 220, + "name": "IndexAccess", + "src": "757:13:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 221, + "name": "Identifier", + "src": "774:6:0" + } + ], + "id": 222, + "name": "Assignment", + "src": "757:23:0" + } + ], + "id": 223, + "name": "ExpressionStatement", + "src": "757:23:0" + }, + { + "children": [ + { + "attributes": { + "operator": "-=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 224, + "name": "Identifier", + "src": "794:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 225, + "name": "Identifier", + "src": "803:5:0" + } + ], + "id": 226, + "name": "IndexAccess", + "src": "794:15:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 227, + "name": "Identifier", + "src": "813:6:0" + } + ], + "id": 228, + "name": "Assignment", + "src": "794:25:0" + } + ], + "id": 229, + "name": "ExpressionStatement", + "src": "794:25:0" + }, + { + "children": [ + { + "attributes": { + "operator": "-=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 230, + "name": "Identifier", + "src": "833:7:0" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 231, + "name": "Identifier", + "src": "841:5:0" + } + ], + "id": 234, + "name": "IndexAccess", + "src": "833:14:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 232, + "name": "Identifier", + "src": "848:3:0" + } + ], + "id": 233, + "name": "MemberAccess", + "src": "848:10:0" + } + ], + "id": 235, + "name": "IndexAccess", + "src": "833:26:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 236, + "name": "Identifier", + "src": "863:6:0" + } + ], + "id": 237, + "name": "Assignment", + "src": "833:36:0" + } + ], + "id": 238, + "name": "ExpressionStatement", + "src": "833:36:0" + }, + { + "children": [ + { + "attributes": { + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "type": "function (address,address,uint256) constant", + "value": "Transfer" + }, + "id": 239, + "name": "Identifier", + "src": "883:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 240, + "name": "Identifier", + "src": "892:5:0" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 241, + "name": "Identifier", + "src": "899:3:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 242, + "name": "Identifier", + "src": "904:6:0" + } + ], + "id": 243, + "name": "FunctionCall", + "src": "883:28:0" + } + ], + "id": 244, + "name": "ExpressionStatement", + "src": "883:28:0" + }, + { + "children": [ + { + "attributes": { + "hexvalue": "74727565", + "subdenomination": null, + "token": "true", + "type": "bool", + "value": "true" + }, + "id": 245, + "name": "Literal", + "src": "932:4:0" + } + ], + "id": 246, + "name": "Return", + "src": "925:11:0" + } + ], + "id": 247, + "name": "Block", + "src": "743:204:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "hexvalue": "66616c7365", + "subdenomination": null, + "token": "false", + "type": "bool", + "value": "false" + }, + "id": 248, + "name": "Literal", + "src": "962:5:0" + } + ], + "id": 249, + "name": "Return", + "src": "955:12:0" + } + ], + "id": 250, + "name": "Block", + "src": "953:17:0" + } + ], + "id": 251, + "name": "IfStatement", + "src": "629:341:0" + } + ], + "id": 252, + "name": "Block", + "src": "619:357:0" + } + ], + "id": 253, + "name": "FunctionDefinition", + "src": "541:435:0" + }, + { + "attributes": { + "constant": true, + "name": "balanceOf", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_owner", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 254, + "name": "ElementaryTypeName", + "src": "1001:7:0" + } + ], + "id": 255, + "name": "VariableDeclaration", + "src": "1001:14:0" + } + ], + "id": 256, + "name": "ParameterList", + "src": "1000:16:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 257, + "name": "ElementaryTypeName", + "src": "1035:4:0" + } + ], + "id": 258, + "name": "VariableDeclaration", + "src": "1035:4:0" + } + ], + "id": 259, + "name": "ParameterList", + "src": "1034:6:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 260, + "name": "Identifier", + "src": "1058:8:0" + }, + { + "attributes": { + "type": "address", + "value": "_owner" + }, + "id": 261, + "name": "Identifier", + "src": "1067:6:0" + } + ], + "id": 262, + "name": "IndexAccess", + "src": "1058:16:0" + } + ], + "id": 263, + "name": "Return", + "src": "1051:23:0" + } + ], + "id": 264, + "name": "Block", + "src": "1041:40:0" + } + ], + "id": 265, + "name": "FunctionDefinition", + "src": "982:99:0" + }, + { + "attributes": { + "constant": false, + "name": "approve", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_spender", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 266, + "name": "ElementaryTypeName", + "src": "1104:7:0" + } + ], + "id": 267, + "name": "VariableDeclaration", + "src": "1104:16:0" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 268, + "name": "ElementaryTypeName", + "src": "1122:4:0" + } + ], + "id": 269, + "name": "VariableDeclaration", + "src": "1122:11:0" + } + ], + "id": 270, + "name": "ParameterList", + "src": "1103:31:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 271, + "name": "ElementaryTypeName", + "src": "1144:4:0" + } + ], + "id": 272, + "name": "VariableDeclaration", + "src": "1144:4:0" + } + ], + "id": 273, + "name": "ParameterList", + "src": "1143:6:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 274, + "name": "Identifier", + "src": "1160:7:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 275, + "name": "Identifier", + "src": "1168:3:0" + } + ], + "id": 276, + "name": "MemberAccess", + "src": "1168:10:0" + } + ], + "id": 278, + "name": "IndexAccess", + "src": "1160:19:0" + }, + { + "attributes": { + "type": "address", + "value": "_spender" + }, + "id": 277, + "name": "Identifier", + "src": "1180:8:0" + } + ], + "id": 279, + "name": "IndexAccess", + "src": "1160:29:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 280, + "name": "Identifier", + "src": "1192:6:0" + } + ], + "id": 281, + "name": "Assignment", + "src": "1160:38:0" + } + ], + "id": 282, + "name": "ExpressionStatement", + "src": "1160:38:0" + }, + { + "children": [ + { + "attributes": { + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "type": "function (address,address,uint256) constant", + "value": "Approval" + }, + "id": 283, + "name": "Identifier", + "src": "1208:8:0" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 284, + "name": "Identifier", + "src": "1217:3:0" + } + ], + "id": 285, + "name": "MemberAccess", + "src": "1217:10:0" + }, + { + "attributes": { + "type": "address", + "value": "_spender" + }, + "id": 286, + "name": "Identifier", + "src": "1229:8:0" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 287, + "name": "Identifier", + "src": "1239:6:0" + } + ], + "id": 288, + "name": "FunctionCall", + "src": "1208:38:0" + } + ], + "id": 289, + "name": "ExpressionStatement", + "src": "1208:38:0" + }, + { + "children": [ + { + "attributes": { + "hexvalue": "74727565", + "subdenomination": null, + "token": "true", + "type": "bool", + "value": "true" + }, + "id": 290, + "name": "Literal", + "src": "1263:4:0" + } + ], + "id": 291, + "name": "Return", + "src": "1256:11:0" + } + ], + "id": 292, + "name": "Block", + "src": "1150:124:0" + } + ], + "id": 293, + "name": "FunctionDefinition", + "src": "1087:187:0" + }, + { + "attributes": { + "constant": true, + "name": "allowance", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_owner", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 294, + "name": "ElementaryTypeName", + "src": "1299:7:0" + } + ], + "id": 295, + "name": "VariableDeclaration", + "src": "1299:14:0" + }, + { + "attributes": { + "constant": false, + "name": "_spender", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 296, + "name": "ElementaryTypeName", + "src": "1315:7:0" + } + ], + "id": 297, + "name": "VariableDeclaration", + "src": "1315:16:0" + } + ], + "id": 298, + "name": "ParameterList", + "src": "1298:34:0" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 299, + "name": "ElementaryTypeName", + "src": "1351:4:0" + } + ], + "id": 300, + "name": "VariableDeclaration", + "src": "1351:4:0" + } + ], + "id": 301, + "name": "ParameterList", + "src": "1350:6:0" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 302, + "name": "Identifier", + "src": "1374:7:0" + }, + { + "attributes": { + "type": "address", + "value": "_owner" + }, + "id": 303, + "name": "Identifier", + "src": "1382:6:0" + } + ], + "id": 304, + "name": "IndexAccess", + "src": "1374:15:0" + }, + { + "attributes": { + "type": "address", + "value": "_spender" + }, + "id": 305, + "name": "Identifier", + "src": "1390:8:0" + } + ], + "id": 306, + "name": "IndexAccess", + "src": "1374:25:0" + } + ], + "id": 307, + "name": "Return", + "src": "1367:32:0" + } + ], + "id": 308, + "name": "Block", + "src": "1357:49:0" + } + ], + "id": 309, + "name": "FunctionDefinition", + "src": "1280:126:0" + }, + { + "attributes": { + "constant": false, + "name": "balances", + "storageLocation": "default", + "type": "mapping(address => uint256)", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 310, + "name": "ElementaryTypeName", + "src": "1421:7:0" + }, + { + "attributes": { + "name": "uint" + }, + "id": 311, + "name": "ElementaryTypeName", + "src": "1432:4:0" + } + ], + "id": 312, + "name": "Mapping", + "src": "1412:25:0" + } + ], + "id": 313, + "name": "VariableDeclaration", + "src": "1412:34:0" + }, + { + "attributes": { + "constant": false, + "name": "allowed", + "storageLocation": "default", + "type": "mapping(address => mapping(address => uint256))", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 314, + "name": "ElementaryTypeName", + "src": "1461:7:0" + }, + { + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 315, + "name": "ElementaryTypeName", + "src": "1481:7:0" + }, + { + "attributes": { + "name": "uint" + }, + "id": 316, + "name": "ElementaryTypeName", + "src": "1492:4:0" + } + ], + "id": 317, + "name": "Mapping", + "src": "1472:25:0" + } + ], + "id": 318, + "name": "Mapping", + "src": "1452:46:0" + } + ], + "id": 319, + "name": "VariableDeclaration", + "src": "1452:54:0" + }, + { + "attributes": { + "constant": false, + "name": "totalSupply", + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 320, + "name": "ElementaryTypeName", + "src": "1512:4:0" + } + ], + "id": 321, + "name": "VariableDeclaration", + "src": "1512:23:0" + } + ], + "id": 322, + "name": "ContractDefinition", + "src": "86:1452:0" + } + ], + "name": "SourceUnit" + } + }, + "1.0.0/Token/Token_v1.sol": { + "id": 1, + "legacyAST": { + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.4", + ".11" + ] + }, + "id": 324, + "name": "PragmaDirective", + "src": "0:24:1" + }, + { + "attributes": { + "fullyImplemented": true, + "isLibrary": false, + "linearizedBaseContracts": [ + 397 + ], + "name": "Token_v1" + }, + "children": [ + { + "attributes": { + "constant": true, + "name": "totalSupply", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [], + "id": 325, + "name": "ParameterList", + "src": "110:2:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "supply", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 326, + "name": "ElementaryTypeName", + "src": "131:4:1" + } + ], + "id": 327, + "name": "VariableDeclaration", + "src": "131:11:1" + } + ], + "id": 328, + "name": "ParameterList", + "src": "130:13:1" + }, + { + "children": [], + "id": 329, + "name": "Block", + "src": "144:2:1" + } + ], + "id": 330, + "name": "FunctionDefinition", + "src": "90:56:1" + }, + { + "attributes": { + "constant": true, + "name": "balanceOf", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_owner", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 331, + "name": "ElementaryTypeName", + "src": "274:7:1" + } + ], + "id": 332, + "name": "VariableDeclaration", + "src": "274:14:1" + } + ], + "id": 333, + "name": "ParameterList", + "src": "273:16:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "balance", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 334, + "name": "ElementaryTypeName", + "src": "308:4:1" + } + ], + "id": 335, + "name": "VariableDeclaration", + "src": "308:12:1" + } + ], + "id": 336, + "name": "ParameterList", + "src": "307:14:1" + }, + { + "children": [], + "id": 337, + "name": "Block", + "src": "322:2:1" + } + ], + "id": 338, + "name": "FunctionDefinition", + "src": "255:69:1" + }, + { + "attributes": { + "constant": false, + "name": "transfer", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 339, + "name": "ElementaryTypeName", + "src": "578:7:1" + } + ], + "id": 340, + "name": "VariableDeclaration", + "src": "578:11:1" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 341, + "name": "ElementaryTypeName", + "src": "591:4:1" + } + ], + "id": 342, + "name": "VariableDeclaration", + "src": "591:11:1" + } + ], + "id": 343, + "name": "ParameterList", + "src": "577:26:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "success", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 344, + "name": "ElementaryTypeName", + "src": "613:4:1" + } + ], + "id": 345, + "name": "VariableDeclaration", + "src": "613:12:1" + } + ], + "id": 346, + "name": "ParameterList", + "src": "612:14:1" + }, + { + "children": [], + "id": 347, + "name": "Block", + "src": "627:2:1" + } + ], + "id": 348, + "name": "FunctionDefinition", + "src": "560:69:1" + }, + { + "attributes": { + "constant": false, + "name": "transferFrom", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 349, + "name": "ElementaryTypeName", + "src": "972:7:1" + } + ], + "id": 350, + "name": "VariableDeclaration", + "src": "972:13:1" + }, + { + "attributes": { + "constant": false, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 351, + "name": "ElementaryTypeName", + "src": "987:7:1" + } + ], + "id": 352, + "name": "VariableDeclaration", + "src": "987:11:1" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 353, + "name": "ElementaryTypeName", + "src": "1000:4:1" + } + ], + "id": 354, + "name": "VariableDeclaration", + "src": "1000:11:1" + } + ], + "id": 355, + "name": "ParameterList", + "src": "971:41:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "success", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 356, + "name": "ElementaryTypeName", + "src": "1022:4:1" + } + ], + "id": 357, + "name": "VariableDeclaration", + "src": "1022:12:1" + } + ], + "id": 358, + "name": "ParameterList", + "src": "1021:14:1" + }, + { + "children": [], + "id": 359, + "name": "Block", + "src": "1036:2:1" + } + ], + "id": 360, + "name": "FunctionDefinition", + "src": "950:88:1" + }, + { + "attributes": { + "constant": false, + "name": "approve", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_spender", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 361, + "name": "ElementaryTypeName", + "src": "1338:7:1" + } + ], + "id": 362, + "name": "VariableDeclaration", + "src": "1338:16:1" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 363, + "name": "ElementaryTypeName", + "src": "1356:4:1" + } + ], + "id": 364, + "name": "VariableDeclaration", + "src": "1356:11:1" + } + ], + "id": 365, + "name": "ParameterList", + "src": "1337:31:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "success", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 366, + "name": "ElementaryTypeName", + "src": "1378:4:1" + } + ], + "id": 367, + "name": "VariableDeclaration", + "src": "1378:12:1" + } + ], + "id": 368, + "name": "ParameterList", + "src": "1377:14:1" + }, + { + "children": [], + "id": 369, + "name": "Block", + "src": "1392:2:1" + } + ], + "id": 370, + "name": "FunctionDefinition", + "src": "1321:73:1" + }, + { + "attributes": { + "constant": true, + "name": "allowance", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_owner", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 371, + "name": "ElementaryTypeName", + "src": "1621:7:1" + } + ], + "id": 372, + "name": "VariableDeclaration", + "src": "1621:14:1" + }, + { + "attributes": { + "constant": false, + "name": "_spender", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 373, + "name": "ElementaryTypeName", + "src": "1637:7:1" + } + ], + "id": 374, + "name": "VariableDeclaration", + "src": "1637:16:1" + } + ], + "id": 375, + "name": "ParameterList", + "src": "1620:34:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "remaining", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 376, + "name": "ElementaryTypeName", + "src": "1673:4:1" + } + ], + "id": 377, + "name": "VariableDeclaration", + "src": "1673:14:1" + } + ], + "id": 378, + "name": "ParameterList", + "src": "1672:16:1" + }, + { + "children": [], + "id": 379, + "name": "Block", + "src": "1689:2:1" + } + ], + "id": 380, + "name": "FunctionDefinition", + "src": "1602:89:1" + }, + { + "attributes": { + "name": "Transfer" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "_from", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 381, + "name": "ElementaryTypeName", + "src": "1712:7:1" + } + ], + "id": 382, + "name": "VariableDeclaration", + "src": "1712:21:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 383, + "name": "ElementaryTypeName", + "src": "1735:7:1" + } + ], + "id": 384, + "name": "VariableDeclaration", + "src": "1735:19:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 385, + "name": "ElementaryTypeName", + "src": "1756:4:1" + } + ], + "id": 386, + "name": "VariableDeclaration", + "src": "1756:11:1" + } + ], + "id": 387, + "name": "ParameterList", + "src": "1711:57:1" + } + ], + "id": 388, + "name": "EventDefinition", + "src": "1697:72:1" + }, + { + "attributes": { + "name": "Approval" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": true, + "name": "_owner", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 389, + "name": "ElementaryTypeName", + "src": "1789:7:1" + } + ], + "id": 390, + "name": "VariableDeclaration", + "src": "1789:22:1" + }, + { + "attributes": { + "constant": false, + "indexed": true, + "name": "_spender", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 391, + "name": "ElementaryTypeName", + "src": "1813:7:1" + } + ], + "id": 392, + "name": "VariableDeclaration", + "src": "1813:24:1" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 393, + "name": "ElementaryTypeName", + "src": "1839:4:1" + } + ], + "id": 394, + "name": "VariableDeclaration", + "src": "1839:11:1" + } + ], + "id": 395, + "name": "ParameterList", + "src": "1788:63:1" + } + ], + "id": 396, + "name": "EventDefinition", + "src": "1774:78:1" + } + ], + "id": 397, + "name": "ContractDefinition", + "src": "26:1828:1" + } + ], + "name": "SourceUnit" + } + }, + "1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol": { + "id": 2, + "legacyAST": { + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "^", + "0.4", + ".11" + ] + }, + "id": 33, + "name": "PragmaDirective", + "src": "580:24:2" + }, + { + "attributes": { + "file": "../ERC20Token/ERC20Token_v1.sol" + }, + "id": 35, + "name": "ImportDirective", + "src": "606:78:2" + }, + { + "attributes": { + "fullyImplemented": true, + "isLibrary": false, + "linearizedBaseContracts": [ + 124, + 322, + 397 + ], + "name": "UnlimitedAllowanceToken_v1" + }, + "children": [ + { + "children": [ + { + "attributes": { + "name": "ERC20Token" + }, + "id": 36, + "name": "UserDefinedTypeName", + "src": "725:10:2" + } + ], + "id": 37, + "name": "InheritanceSpecifier", + "src": "725:10:2" + }, + { + "attributes": { + "constant": true, + "name": "MAX_UINT", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 38, + "name": "ElementaryTypeName", + "src": "743:4:2" + }, + { + "attributes": { + "operator": "-", + "type": "int_const 115792089237316195423570985008687907853269984665640564039457584007913129639935" + }, + "children": [ + { + "attributes": { + "operator": "**", + "type": "int_const 115792089237316195423570985008687907853269984665640564039457584007913129639936" + }, + "children": [ + { + "attributes": { + "hexvalue": "32", + "subdenomination": null, + "token": null, + "type": "int_const 2", + "value": "2" + }, + "id": 39, + "name": "Literal", + "src": "768:1:2" + }, + { + "attributes": { + "hexvalue": "323536", + "subdenomination": null, + "token": null, + "type": "int_const 256", + "value": "256" + }, + "id": 40, + "name": "Literal", + "src": "771:3:2" + } + ], + "id": 41, + "name": "BinaryOperation", + "src": "768:6:2" + }, + { + "attributes": { + "hexvalue": "31", + "subdenomination": null, + "token": null, + "type": "int_const 1", + "value": "1" + }, + "id": 42, + "name": "Literal", + "src": "777:1:2" + } + ], + "id": 43, + "name": "BinaryOperation", + "src": "768:10:2" + } + ], + "id": 44, + "name": "VariableDeclaration", + "src": "743:35:2" + }, + { + "attributes": { + "constant": false, + "name": "transferFrom", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_from", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 45, + "name": "ElementaryTypeName", + "src": "1088:7:2" + } + ], + "id": 46, + "name": "VariableDeclaration", + "src": "1088:13:2" + }, + { + "attributes": { + "constant": false, + "name": "_to", + "storageLocation": "default", + "type": "address", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address" + }, + "id": 47, + "name": "ElementaryTypeName", + "src": "1103:7:2" + } + ], + "id": 48, + "name": "VariableDeclaration", + "src": "1103:11:2" + }, + { + "attributes": { + "constant": false, + "name": "_value", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 49, + "name": "ElementaryTypeName", + "src": "1116:4:2" + } + ], + "id": 50, + "name": "VariableDeclaration", + "src": "1116:11:2" + } + ], + "id": 51, + "name": "ParameterList", + "src": "1087:41:2" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "storageLocation": "default", + "type": "bool", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool" + }, + "id": 52, + "name": "ElementaryTypeName", + "src": "1161:4:2" + } + ], + "id": 53, + "name": "VariableDeclaration", + "src": "1161:4:2" + } + ], + "id": 54, + "name": "ParameterList", + "src": "1160:6:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "allowance", + "storageLocation": "default", + "type": "uint256", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 55, + "name": "ElementaryTypeName", + "src": "1181:4:2" + } + ], + "id": 56, + "name": "VariableDeclaration", + "src": "1181:14:2" + }, + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 57, + "name": "Identifier", + "src": "1198:7:2" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 58, + "name": "Identifier", + "src": "1206:5:2" + } + ], + "id": 59, + "name": "IndexAccess", + "src": "1198:14:2" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 60, + "name": "Identifier", + "src": "1213:3:2" + } + ], + "id": 61, + "name": "MemberAccess", + "src": "1213:10:2" + } + ], + "id": 62, + "name": "IndexAccess", + "src": "1198:26:2" + } + ], + "id": 63, + "name": "VariableDeclarationStatement", + "src": "1181:43:2" + }, + { + "children": [ + { + "attributes": { + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": "&&", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 64, + "name": "Identifier", + "src": "1238:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 65, + "name": "Identifier", + "src": "1247:5:2" + } + ], + "id": 66, + "name": "IndexAccess", + "src": "1238:15:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 67, + "name": "Identifier", + "src": "1257:6:2" + } + ], + "id": 68, + "name": "BinaryOperation", + "src": "1238:25:2" + }, + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256", + "value": "allowance" + }, + "id": 69, + "name": "Identifier", + "src": "1279:9:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 70, + "name": "Identifier", + "src": "1292:6:2" + } + ], + "id": 71, + "name": "BinaryOperation", + "src": "1279:19:2" + } + ], + "id": 72, + "name": "BinaryOperation", + "src": "1238:60:2" + }, + { + "attributes": { + "operator": ">=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "operator": "+", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 73, + "name": "Identifier", + "src": "1314:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 74, + "name": "Identifier", + "src": "1323:3:2" + } + ], + "id": 75, + "name": "IndexAccess", + "src": "1314:13:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 76, + "name": "Identifier", + "src": "1330:6:2" + } + ], + "id": 77, + "name": "BinaryOperation", + "src": "1314:22:2" + }, + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 78, + "name": "Identifier", + "src": "1340:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 79, + "name": "Identifier", + "src": "1349:3:2" + } + ], + "id": 80, + "name": "IndexAccess", + "src": "1340:13:2" + } + ], + "id": 81, + "name": "BinaryOperation", + "src": "1314:39:2" + } + ], + "id": 82, + "name": "BinaryOperation", + "src": "1238:115:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "+=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 83, + "name": "Identifier", + "src": "1378:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 84, + "name": "Identifier", + "src": "1387:3:2" + } + ], + "id": 85, + "name": "IndexAccess", + "src": "1378:13:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 86, + "name": "Identifier", + "src": "1395:6:2" + } + ], + "id": 87, + "name": "Assignment", + "src": "1378:23:2" + } + ], + "id": 88, + "name": "ExpressionStatement", + "src": "1378:23:2" + }, + { + "children": [ + { + "attributes": { + "operator": "-=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 89, + "name": "Identifier", + "src": "1415:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 90, + "name": "Identifier", + "src": "1424:5:2" + } + ], + "id": 91, + "name": "IndexAccess", + "src": "1415:15:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 92, + "name": "Identifier", + "src": "1434:6:2" + } + ], + "id": 93, + "name": "Assignment", + "src": "1415:25:2" + } + ], + "id": 94, + "name": "ExpressionStatement", + "src": "1415:25:2" + }, + { + "children": [ + { + "attributes": { + "operator": "<", + "type": "bool" + }, + "children": [ + { + "attributes": { + "type": "uint256", + "value": "allowance" + }, + "id": 95, + "name": "Identifier", + "src": "1458:9:2" + }, + { + "attributes": { + "type": "uint256", + "value": "MAX_UINT" + }, + "id": 96, + "name": "Identifier", + "src": "1470:8:2" + } + ], + "id": 97, + "name": "BinaryOperation", + "src": "1458:20:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "-=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => mapping(address => uint256))", + "value": "allowed" + }, + "id": 98, + "name": "Identifier", + "src": "1498:7:2" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 99, + "name": "Identifier", + "src": "1506:5:2" + } + ], + "id": 102, + "name": "IndexAccess", + "src": "1498:14:2" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 100, + "name": "Identifier", + "src": "1513:3:2" + } + ], + "id": 101, + "name": "MemberAccess", + "src": "1513:10:2" + } + ], + "id": 103, + "name": "IndexAccess", + "src": "1498:26:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 104, + "name": "Identifier", + "src": "1528:6:2" + } + ], + "id": 105, + "name": "Assignment", + "src": "1498:36:2" + } + ], + "id": 106, + "name": "ExpressionStatement", + "src": "1498:36:2" + } + ], + "id": 107, + "name": "Block", + "src": "1480:69:2" + } + ], + "id": 108, + "name": "IfStatement", + "src": "1454:95:2" + }, + { + "children": [ + { + "attributes": { + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "type": "function (address,address,uint256) constant", + "value": "Transfer" + }, + "id": 109, + "name": "Identifier", + "src": "1562:8:2" + }, + { + "attributes": { + "type": "address", + "value": "_from" + }, + "id": 110, + "name": "Identifier", + "src": "1571:5:2" + }, + { + "attributes": { + "type": "address", + "value": "_to" + }, + "id": 111, + "name": "Identifier", + "src": "1578:3:2" + }, + { + "attributes": { + "type": "uint256", + "value": "_value" + }, + "id": 112, + "name": "Identifier", + "src": "1583:6:2" + } + ], + "id": 113, + "name": "FunctionCall", + "src": "1562:28:2" + } + ], + "id": 114, + "name": "ExpressionStatement", + "src": "1562:28:2" + }, + { + "children": [ + { + "attributes": { + "hexvalue": "74727565", + "subdenomination": null, + "token": "true", + "type": "bool", + "value": "true" + }, + "id": 115, + "name": "Literal", + "src": "1611:4:2" + } + ], + "id": 116, + "name": "Return", + "src": "1604:11:2" + } + ], + "id": 117, + "name": "Block", + "src": "1364:262:2" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "hexvalue": "66616c7365", + "subdenomination": null, + "token": "false", + "type": "bool", + "value": "false" + }, + "id": 118, + "name": "Literal", + "src": "1653:5:2" + } + ], + "id": 119, + "name": "Return", + "src": "1646:12:2" + } + ], + "id": 120, + "name": "Block", + "src": "1632:37:2" + } + ], + "id": 121, + "name": "IfStatement", + "src": "1234:435:2" + } + ], + "id": 122, + "name": "Block", + "src": "1171:504:2" + } + ], + "id": 123, + "name": "FunctionDefinition", + "src": "1066:609:2" + } + ], + "id": 124, + "name": "ContractDefinition", + "src": "686:991:2" + } + ], + "name": "SourceUnit" + } + }, + "2.0.0/tokens/ZRXToken/ZRXToken.sol": { + "id": 3, + "legacyAST": { + "children": [ + { + "attributes": { + "literals": [ + "solidity", + "0.4", + ".11" + ] + }, + "id": 1, + "name": "PragmaDirective", + "src": "580:23:3" + }, + { + "attributes": { + "file": "../../../1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol" + }, + "id": 3, + "name": "ImportDirective", + "src": "650:142:3" + }, + { + "attributes": { + "fullyImplemented": true, + "isLibrary": false, + "linearizedBaseContracts": [ + 31, + 124, + 322, + 397 + ], + "name": "ZRXToken" + }, + "children": [ + { + "children": [ + { + "attributes": { + "name": "UnlimitedAllowanceToken" + }, + "id": 4, + "name": "UserDefinedTypeName", + "src": "816:23:3" + } + ], + "id": 5, + "name": "InheritanceSpecifier", + "src": "816:23:3" + }, + { + "attributes": { + "constant": true, + "name": "decimals", + "storageLocation": "default", + "type": "uint8", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint8" + }, + "id": 6, + "name": "ElementaryTypeName", + "src": "891:5:3" + }, + { + "attributes": { + "hexvalue": "3138", + "subdenomination": null, + "token": null, + "type": "int_const 18", + "value": "18" + }, + "id": 7, + "name": "Literal", + "src": "924:2:3" + } + ], + "id": 8, + "name": "VariableDeclaration", + "src": "891:35:3" + }, + { + "attributes": { + "constant": false, + "name": "totalSupply", + "storageLocation": "default", + "type": "uint256", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "uint" + }, + "id": 9, + "name": "ElementaryTypeName", + "src": "932:4:3" + }, + { + "attributes": { + "operator": "**", + "type": "int_const 1000000000000000000000000000" + }, + "children": [ + { + "attributes": { + "hexvalue": "3130", + "subdenomination": null, + "token": null, + "type": "int_const 10", + "value": "10" + }, + "id": 10, + "name": "Literal", + "src": "958:2:3" + }, + { + "attributes": { + "hexvalue": "3237", + "subdenomination": null, + "token": null, + "type": "int_const 27", + "value": "27" + }, + "id": 11, + "name": "Literal", + "src": "962:2:3" + } + ], + "id": 12, + "name": "BinaryOperation", + "src": "958:6:3" + } + ], + "id": 13, + "name": "VariableDeclaration", + "src": "932:32:3" + }, + { + "attributes": { + "constant": true, + "name": "name", + "storageLocation": "default", + "type": "string memory", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "string" + }, + "id": 14, + "name": "ElementaryTypeName", + "src": "1009:6:3" + }, + { + "attributes": { + "hexvalue": "30782050726f746f636f6c20546f6b656e", + "subdenomination": null, + "token": null, + "type": "literal_string \"0x Protocol Token\"", + "value": "0x Protocol Token" + }, + "id": 15, + "name": "Literal", + "src": "1039:19:3" + } + ], + "id": 16, + "name": "VariableDeclaration", + "src": "1009:49:3" + }, + { + "attributes": { + "constant": true, + "name": "symbol", + "storageLocation": "default", + "type": "string memory", + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "string" + }, + "id": 17, + "name": "ElementaryTypeName", + "src": "1064:6:3" + }, + { + "attributes": { + "hexvalue": "5a5258", + "subdenomination": null, + "token": null, + "type": "literal_string \"ZRX\"", + "value": "ZRX" + }, + "id": 18, + "name": "Literal", + "src": "1096:5:3" + } + ], + "id": 19, + "name": "VariableDeclaration", + "src": "1064:37:3" + }, + { + "attributes": { + "constant": false, + "name": "ZRXToken", + "payable": false, + "visibility": "public" + }, + "children": [ + { + "children": [], + "id": 20, + "name": "ParameterList", + "src": "1167:2:3" + }, + { + "children": [], + "id": 21, + "name": "ParameterList", + "src": "1189:0:3" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "operator": "=", + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "uint256" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => uint256)", + "value": "balances" + }, + "id": 22, + "name": "Identifier", + "src": "1199:8:3" + }, + { + "attributes": { + "member_name": "sender", + "type": "address" + }, + "children": [ + { + "attributes": { + "type": "msg", + "value": "msg" + }, + "id": 23, + "name": "Identifier", + "src": "1208:3:3" + } + ], + "id": 24, + "name": "MemberAccess", + "src": "1208:10:3" + } + ], + "id": 25, + "name": "IndexAccess", + "src": "1199:20:3" + }, + { + "attributes": { + "type": "uint256", + "value": "totalSupply" + }, + "id": 26, + "name": "Identifier", + "src": "1222:11:3" + } + ], + "id": 27, + "name": "Assignment", + "src": "1199:34:3" + } + ], + "id": 28, + "name": "ExpressionStatement", + "src": "1199:34:3" + } + ], + "id": 29, + "name": "Block", + "src": "1189:51:3" + } + ], + "id": 30, + "name": "FunctionDefinition", + "src": "1150:90:3" + } + ], + "id": 31, + "name": "ContractDefinition", + "src": "795:447:3" + } + ], + "name": "SourceUnit" + } + } + }, + "sourceCodes": { + "1.0.0/ERC20Token/ERC20Token_v1.sol": "pragma solidity ^0.4.11;\n\nimport { Token_v1 as Token } from \"../Token/Token_v1.sol\";\n\ncontract ERC20Token_v1 is Token {\n\n function transfer(address _to, uint _value) returns (bool) {\n //Default assumes totalSupply can't be over max (2^256 - 1).\n if (balances[msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {\n balances[msg.sender] -= _value;\n balances[_to] += _value;\n Transfer(msg.sender, _to, _value);\n return true;\n } else { return false; }\n }\n\n function transferFrom(address _from, address _to, uint _value) returns (bool) {\n if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to]) {\n balances[_to] += _value;\n balances[_from] -= _value;\n allowed[_from][msg.sender] -= _value;\n Transfer(_from, _to, _value);\n return true;\n } else { return false; }\n }\n\n function balanceOf(address _owner) constant returns (uint) {\n return balances[_owner];\n }\n\n function approve(address _spender, uint _value) returns (bool) {\n allowed[msg.sender][_spender] = _value;\n Approval(msg.sender, _spender, _value);\n return true;\n }\n\n function allowance(address _owner, address _spender) constant returns (uint) {\n return allowed[_owner][_spender];\n }\n\n mapping (address => uint) balances;\n mapping (address => mapping (address => uint)) allowed;\n uint public totalSupply;\n}\n", + "1.0.0/Token/Token_v1.sol": "pragma solidity ^0.4.11;\n\ncontract Token_v1 {\n\n /// @return total amount of tokens\n function totalSupply() constant returns (uint supply) {}\n\n /// @param _owner The address from which the balance will be retrieved\n /// @return The balance\n function balanceOf(address _owner) constant returns (uint balance) {}\n\n /// @notice send `_value` token to `_to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transfer(address _to, uint _value) returns (bool success) {}\n\n /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transferFrom(address _from, address _to, uint _value) returns (bool success) {}\n\n /// @notice `msg.sender` approves `_addr` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of wei to be approved for transfer\n /// @return Whether the approval was successful or not\n function approve(address _spender, uint _value) returns (bool success) {}\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender) constant returns (uint remaining) {}\n\n event Transfer(address indexed _from, address indexed _to, uint _value);\n event Approval(address indexed _owner, address indexed _spender, uint _value);\n}\n\n", + "1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity ^0.4.11;\n\nimport { ERC20Token_v1 as ERC20Token } from \"../ERC20Token/ERC20Token_v1.sol\";\n\ncontract UnlimitedAllowanceToken_v1 is ERC20Token {\n\n uint constant MAX_UINT = 2**256 - 1;\n\n /// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.\n /// @param _from Address to transfer from.\n /// @param _to Address to transfer to.\n /// @param _value Amount to transfer.\n /// @return Success of transfer.\n function transferFrom(address _from, address _to, uint _value)\n public\n returns (bool)\n {\n uint allowance = allowed[_from][msg.sender];\n if (balances[_from] >= _value\n && allowance >= _value\n && balances[_to] + _value >= balances[_to]\n ) {\n balances[_to] += _value;\n balances[_from] -= _value;\n if (allowance < MAX_UINT) {\n allowed[_from][msg.sender] -= _value;\n }\n Transfer(_from, _to, _value);\n return true;\n } else {\n return false;\n }\n }\n}\n", + "2.0.0/tokens/ZRXToken/ZRXToken.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma solidity 0.4.11;\n\n// solhint-disable-next-line max-line-length\nimport { UnlimitedAllowanceToken_v1 as UnlimitedAllowanceToken } from \"../../../1.0.0/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol\";\n\n\ncontract ZRXToken is UnlimitedAllowanceToken {\n\n // solhint-disable const-name-snakecase\n uint8 constant public decimals = 18;\n uint public totalSupply = 10**27; // 1 billion tokens, 18 decimal places\n string constant public name = \"0x Protocol Token\";\n string constant public symbol = \"ZRX\";\n // solhint-enableconst-name-snakecase\n\n function ZRXToken()\n public\n {\n balances[msg.sender] = totalSupply;\n }\n}\n" + }, + "sourceTreeHashHex": "0xbcce67d129fe53ddb9717b4f567b33108c41a4f4324aa47ac609037e41f5b95d", + "compiler": { + "name": "solc", + "version": "soljson-v0.4.11+commit.68ef5810.js", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000000 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode.object", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.object", + "evm.deployedBytecode.sourceMap" + ] + } + } + } + }, + "networks": { + "50": { + "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c", + "links": {}, + "constructorArgs": "[]" + } + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f2eba5d47..d43d8bd22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3731,7 +3731,7 @@ detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" -detect-node@^2.0.3: +detect-node@2.0.3, detect-node@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" -- cgit From 2f41ed50c198b2952b1af50de55df2f19d645033 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 16:47:32 +0200 Subject: Switch conditional --- packages/utils/src/fetchAsync.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts index 47d87815e..8295ff5ec 100644 --- a/packages/utils/src/fetchAsync.ts +++ b/packages/utils/src/fetchAsync.ts @@ -7,7 +7,7 @@ export const fetchAsync = async ( timeoutMs: number = 20000, ): Promise => { let optionsWithAbortParam; - if (isNode) { + if (!isNode) { const controller = new AbortController(); const signal = controller.signal; setTimeout(() => { -- cgit From efc64cf17fe01a5dbed817be31f7d8c7f9cd078a Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 17:17:45 +0200 Subject: Remove unused import --- packages/abi-gen/test/utils_test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/abi-gen/test/utils_test.ts b/packages/abi-gen/test/utils_test.ts index f3dd38035..820c0c675 100644 --- a/packages/abi-gen/test/utils_test.ts +++ b/packages/abi-gen/test/utils_test.ts @@ -2,7 +2,6 @@ import * as chai from 'chai'; import * as dirtyChai from 'dirty-chai'; import * as fs from 'fs'; import 'mocha'; -import * as sleep from 'sleep'; import * as tmp from 'tmp'; import { utils } from '../src/utils'; -- cgit From de1029d5ef7f069a2215557e901f3230f6da98fa Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 18:51:21 +0200 Subject: Fix linter issues --- packages/website/ts/blockchain.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index 099171c45..805b48856 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -17,7 +17,6 @@ import { RedundantSubprovider, RPCSubprovider, SignerSubprovider, - Subprovider, Web3ProviderEngine, } from '@0xproject/subproviders'; import { @@ -159,7 +158,7 @@ export class Blockchain { const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkIdIfExists], publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); - provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); + provider.addProvider(new RedundantSubprovider(rpcSubproviders)); provider.start(); return [provider, ledgerSubprovider]; } else if (doesInjectedWeb3Exist && isPublicNodeAvailableForNetworkId) { @@ -171,7 +170,7 @@ export class Blockchain { const rpcSubproviders = _.map(publicNodeUrlsIfExistsForNetworkId, publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); - provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); + provider.addProvider(new RedundantSubprovider(rpcSubproviders)); provider.start(); return [provider, undefined]; } else if (doesInjectedWeb3Exist) { @@ -187,7 +186,7 @@ export class Blockchain { const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { return new RPCSubprovider(publicNodeUrl); }); - provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); + provider.addProvider(new RedundantSubprovider(rpcSubproviders)); provider.start(); return [provider, undefined]; } -- cgit From 80071beaacd4303bd5c7edb699d202861fd98b50 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 19:38:35 +0200 Subject: Add assertion to make sure caller to fetchAsync isn't trying to set timeout in a context-specific way --- packages/utils/src/fetchAsync.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts index 8295ff5ec..6ae2ba1a4 100644 --- a/packages/utils/src/fetchAsync.ts +++ b/packages/utils/src/fetchAsync.ts @@ -6,6 +6,9 @@ export const fetchAsync = async ( options: RequestInit = {}, timeoutMs: number = 20000, ): Promise => { + if (options.signal || (options as any).timeout) { + throw new Error('Cannot call fetchAsync with options.signal or options.timeout. To set a timeout, please use the supplied "timeoutMs" parameter.'); + } let optionsWithAbortParam; if (!isNode) { const controller = new AbortController(); -- cgit From 2f0a9148387b66d75b9ee3856e68f0ed3aa149de Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 13 Jul 2018 19:53:49 +0200 Subject: Fix linter --- packages/utils/src/fetchAsync.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/utils/src/fetchAsync.ts b/packages/utils/src/fetchAsync.ts index 6ae2ba1a4..c02e5baba 100644 --- a/packages/utils/src/fetchAsync.ts +++ b/packages/utils/src/fetchAsync.ts @@ -7,7 +7,9 @@ export const fetchAsync = async ( timeoutMs: number = 20000, ): Promise => { if (options.signal || (options as any).timeout) { - throw new Error('Cannot call fetchAsync with options.signal or options.timeout. To set a timeout, please use the supplied "timeoutMs" parameter.'); + throw new Error( + 'Cannot call fetchAsync with options.signal or options.timeout. To set a timeout, please use the supplied "timeoutMs" parameter.', + ); } let optionsWithAbortParam; if (!isNode) { -- cgit